没有注释看不懂,如果还能能有一点点讲解就最好了,谢谢!
#include <stdio.h>
#include <string.h>
int f[1010],w[1010],v[1010];
int max(int x,int y)
{
if(x>y) return x;
else return y;
}
int main()
{
int t,m,i,j;
memset(f,0,sizeof(f));
scanf("%d %d",&t,&m);
for (i=1;i<=m;i++)
scanf("%d %d",&w[i],&v[i]);
for (i=1;i<=m;i++)
{
for (j=t;j>=w[i];j--)
{
if(w[i]<=t)
f[j]=max(f[j-w[i]]+v[i],f[j]);
}
}
printf("%d",f[t]);
printf("\n");
getch();
return 0;
}
还有没有更简单的方法?求程序和注释!
这是一个背包问题,该算法已经是最简单的了,还有递归算法,我觉得更麻烦。对你的代码进行解释如下:
//背包问题:有m件物品和一个承重为t的背包。第i件物品的重量是w[i],价值是v[i]。要一份01背包的代码(C语言),
要尽量每一行都有注释,明白了吗?