讨论 / C语言来解决采药的问题
liusikai 2013-06-29 05:59: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 time[100],value[100];

int f[1000]={0};

int t,m,i,j;

int max(int x,int y);//.....比较两个数的大小。

scanf("%d%d",&t,&m);//.....输入t与m的值。

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

{

scanf("%d%d",&time[i],&value[i]);//....输入采某种药的时间与其价值。

}

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

{

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

{

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

{

f[j]=max(f[j],f[j-time[i]]+value[i]);/*.....动态规划的动态转移方程,实际上自己通过笔试就能深刻知道其运行的过程。*/

}

}

}

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

return 0;

}

查看更多回复
提交回复