讨论 / C语言来解决饮食的问题
liusikai 2013-06-29 23:27:00
点我顶贴 收藏 删除
#include<stdio.h>

int max(int x,int y)

{

int z;

if(x>y) z=x;

else z=y;

return z;

}

int main()

{

int value[30],f[35000]={0};

int c,b,i,j;

int max(int x,int y);

scanf("%d%d",&c,&b);

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

{

scanf("%d",&value[i]);

}

/* for(i=0;i<b;i++)

{

for(j=i;j<b;j++)

{

int a;

if(value[i]<value[j])

{

a=value[i];

value[i]=value[j];

value[j]=a;

}

}

}....根本不要考虑到数据的排列的顺序,以为转移动态过程会根据c与value[i]的差值来转移数据再把新得到的数据储存到数组f[i]中。*/

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

{

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

{

if(j-value[i]>=0)

{

f[j]=max(f[j],f[j-value[i]]+value[i]);

}

}

}

printf("%d\n",f[c]);

return 0;

}

查看更多回复
提交回复