-
iwktd981220
'''
movb $0xF, (%ebx)
'''
这里的错误的原因是否应该理解为在x86_64下不应该使用32位的地址来寻址?
参考:https://stackoverflow.com/questions/31633075/error-moving-a-constant-byte-value-into-ebx -
iwktd981220
@bintou 在 关于17级暑假学习的建议 中说:
@iwktd981220 这。。。我不知道啊。如果你们指的是Han Kunlin之类的,那就肯定是你们了!!!这么牛的一群人不讲,谁讲?
瑟瑟发抖(;´༎ຶД༎ຶ`)
-
-
iwktd981220
@诟屍 在 课本代码实现:截钢条 中说:
@iwktd981220 在 课本代码实现:截钢条 中说:
这个结果是否意味着我只需要找出1到10的最优解即可使用r(n) = floor(n/10)*r(10)+r(n%10),求出任意大值的最优解?
反例:
p = [1, 1, 1, 1, 1, 100, 1, 1, 1, 1];
r(2) = 2
r(4) = 4
r(6) = 100
r(10) = 104
r(12) = 200 而不是 106我的猜想的确是错误的,按照我的算法,是可以输出
我认为是由于题目条件决定这个性质的
我暂时没有问题了,谢谢师兄的解答和质疑,收益匪浅。 -
iwktd981220
@诟屍 在 课本代码实现:截钢条 中说:
我们需要在朴素算法中访问到大于10的长度的钢条的价格
不知道具体指什么。。。
show me the code我感觉我是理解错书本上的意思了,书本上:
而我之前认为是已知长度1到10的价格,需要求长度为n(n>0)的最大价格。我现在使用memo的方法计算我所认为的问题,发现大于10后,单纯的是r(n) = floor(n/10)*r(10)+r(n%10)
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int r[150] = {0,1,5,8,9,10,17,17,20,24,30}; inline int max(int n1,int n2){return n1>n2?n1:n2;}; int cutRod_memo_aux(int n){ int q = r[n]; if(r[n] > 0 && n > 11)return r[n]; if(n == 0) return 0; else { for (int i = 1; i < n; i++) { q = max(q,r[i] + cutRod_memo_aux(n-i)); } r[n] = q; } return r[n]; } int main(){ cout<<"The best for 150 is "<<cutRod_memo_aux(150)<<endl; return 0; }
输出为:
这个结果是否意味着我只需要找出1到10的最优解即可使用r(n) = floor(n/10)*r(10)+r(n%10),求出任意大值的最优解? -
iwktd981220
我想将截钢条中三种算法:朴素、备忘和自底向上都实现来了解DP。
我们有的条件是:钢条长度1到10的价格。
但是在这个过程中,按照课本的想法以及伪代码我们需要在朴素算法中访问到大于10的长度的钢条的价格,意味着在真正的代码实现中,这里存在着越界的问题,然后我就卡在这里了。
后来和大东聊了两句,发现其实我没有理解切钢条实际上是单向切割的,这一个点。暂时想到这么多,写代码看看问题是不是这样(/ω\)