C/C++ 01背包问题纠错,出现了问题,谢谢各位。

//背包问题:有m件物品和一个承重为t的背包。第i件物品的重量是w[i],价值是v[i]。//求解将哪些物品装入背包可使这些物品的重量总和不超过背包承重量t,且价值总和最... //背包问题:有m件物品和一个承重为t的背包。第i件物品的重量是w[i],价值是v[i]。
//求解将哪些物品装入背包可使这些物品的重量总和不超过背包承重量t,且价值总和最大。
#include <iostream>
#include <string>
#include <algorithm>

using namespace std;
int main(int argc, char *argv[]) {
int w[]={0,4,6,2,2,5,1}; //重量
int v[]={0,8,10,6,3,7,2}; //价值
int f[1001];//f记录不同重量时的价值
memset(f,0,sizeof(f)); //所有价值初始化为0
int t;
scanf("%d",&t); //背包重量t
for(int i = 1;1 <= t;i++){ //尝试放入每一件物品。
for(int m = t;t >= w[i];t--){
f[m] = max(f[m],f[m-w[i]] + v[i]);
}
}
printf("%d",f[t]);
return 0;
}
#include <iostream>
#include <string.h>
#include <algorithm>
using namespace std;
int main(int argc, char *argv[]) {
int w[]={0,4,6,2,2,5,1}; //重量
int v[]={0,8,10,6,3,7,2}; //价值
int f[1001];//f记录不同重量时的价值
memset(f,0,sizeof(f)); //所有价值初始化为0
int t;
scanf("%d",&t); //背包重量t
for(int i = 1;1 <= 6;i++){ //尝试放入每一件物品。
for(int m = t;m >= w[i];m--){
f[m] = max(f[m-1],f[m-w[i]] + v[i]);
}
}
printf("%d",f[t]);
return 0;
}
改进之后还是不行
展开
 我来答
弈轩
2018-09-29 · 知道合伙人教育行家
弈轩
知道合伙人教育行家
采纳数:1029 获赞数:7540
电子设计大赛三等奖 优秀毕业生

向TA提问 私信TA
展开全部

如图,很可惜你这个程序和正解的差别只有main()框架。


你的程序是思路错误,如果你想要解决此问题的有效程序,请追问。
不用改了应该重新整理思路,重写。

更多追问追答
追答
这个程序和正解的差别只有main()框架。改为:“这个程序和正解的差别除了main()框架就没别的了。

请不要沮丧,这道题对于编程
初学者有难度。通常要用递归解决,或者用更高级的算法
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式