这题是01背包的动规写法,代码有点小问题得改改。应该是这样:开个二维数组f表示前i个物品、容量为j时的最大价值。输入总容量m和物品数n,然后循环读每个物品的重量w和价值c。初始化第一行第一列都为0。状态转移方程就是:如果当前容量j >= w,那就比较放进第i个物品和不放的价值,取大的那个,即f = max(f] + c, f);否则就直接等于f。最后输出f就行。原代码语法有误,比如f(0,i)应该用方括号,还有循环里没定义数组维度,应该先setlength分配内存。总之核心思想就是每步做决策,装还是不装,靠状态转移搞到底。