C++动态规划0-1背包问题
下面是我的代码:#include<iostream>#include<cstdio>usingnamespacestd;intf[101][1001],T[101],w[...
下面是我的代码:
#include<iostream>
#include<cstdio>
using namespace std;
int f[101][1001],T[101],w[101];
int main()
{
//freopen("in.in","r",stdin);
//freopen("out.out","w",stdout);
int t,m;
memset(f,0,sizeof(f));
memset(T,0,sizeof(T));
memset(w,0,sizeof(w));
scanf("%d%d",&t,&m);
for(int i=1;i<=m;i++)
scanf("%d%d",&T[i],&w[i]);
for(int i=1;i<=m;i++)
for(int j=1;j<=t;j++)
{
if(j>=T[i])
{
if(f[i-1][j]>f[i-1][j-T[i]]+w[i])f[i][j]=f[i-1][j];
else f[i][j]=f[i-1][j-T[i]]+w[i];
}
else f[i][j]=f[i-1][j];
}
printf("%d",f[m][t]);
return 0;
}
请问是有哪里不对的。。谢了 展开
#include<iostream>
#include<cstdio>
using namespace std;
int f[101][1001],T[101],w[101];
int main()
{
//freopen("in.in","r",stdin);
//freopen("out.out","w",stdout);
int t,m;
memset(f,0,sizeof(f));
memset(T,0,sizeof(T));
memset(w,0,sizeof(w));
scanf("%d%d",&t,&m);
for(int i=1;i<=m;i++)
scanf("%d%d",&T[i],&w[i]);
for(int i=1;i<=m;i++)
for(int j=1;j<=t;j++)
{
if(j>=T[i])
{
if(f[i-1][j]>f[i-1][j-T[i]]+w[i])f[i][j]=f[i-1][j];
else f[i][j]=f[i-1][j-T[i]]+w[i];
}
else f[i][j]=f[i-1][j];
}
printf("%d",f[m][t]);
return 0;
}
请问是有哪里不对的。。谢了 展开
3个回答
展开全部
我想说的是这个代码你不用纠结了,代码写的质量不太高,而且有很多冗余的东西。最好的回答就是去看背包九讲,里面详细的讲述了各种背包的思路和伪代码。真的没有什么比看这个效果更好了。你百度一下背包九讲,之后下载吧。看懂了之后若是还有什么其他的疑问就再问吧。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
展开全部
我想说的是这样的代码,你不纠结,编写的代码的质量不太高,而且有很多多余的东西。最好的答案是看背包九,里面详细介绍各种背包的想法和伪代码。真的没有什么比看。百度,背包9讲后下载。阅读后,如果还有什么其他的问题要问。
追问
抄袭改字没意思。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-02-19
展开全部
仔细看了看,程序应该没有错误,是不是数据范围问题?或者你把什么不对的具体说说。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询