您的位置:首页 > 其它

一维数组实现01背包

2015-08-14 21:20 281 查看
#include<stdio.h>

#include<string.h>

int d[200],w[200],v[200],n,W;

int max(int a,int b)

{

return a>b?a:b;

}

void fun()

{

int i,j;

memset(v,0,sizeof(v));

for (i=0;i<n;i++)

for (j=W;j>=0;j--)

{

if (j>=w[i])

v[j]=max(v[j-w[i]]+d[i],v[j]);

}

}

int main()

{

int i;

while (~scanf("%d%d",&n,&W)) //输入物品数量以及背包的总容量

{

for (i=0;i<n;i++)

scanf("%d%d",&w[i],&d[i]); //输入每个物品的对应的容量以及价值

fun();

printf("%d\n",v[W]);

}

return 0;

}

//通过对背包容量的控制,到最后得到最大价值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: