(RQoj 15 采药------rwkj 10.1.5.253 1447) 网上

#include<stdio.h>
int max(int x,int y)
{
int z;
if (x>y) z=x;
else z=y;
return z;
}

int max(int a,int b)
{
return a > b ? a : b;
}


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 ",f[t]);
return 0;
}

原文地址:https://www.cnblogs.com/2014acm/p/3908388.html