#include"fstream.h"
#include"iostream.h"
main()
{
fstream fin,fout;
fin.open("medic.in",ios::in);
fout.open("medic.out",ios::out);
int time,kind,i,j,v[101],t[101],s[101][1001];//v=价值,t=时间,s[i][j]表示总共j时间,前i种(数组从0开始)药得到的最大价值
fin>>time>>kind;
for(i=0;i<kind;i++)fin>>t[i]>>v[i];
for(i=0;i<=time;i++)
s[0][i]=0;
for(i=0;i<kind;i++)
{
for(j=1;j<=time;j++)
{
s[i+1][j]=s[i][j];
if(t[i]<=j)if(s[i][j-t[i]]+v[i]>s[i+1][j])//在时间还够的条件下,取二者中较优的情况
s[i+1][j]=s[i][j-t[i]]+v[i];
}
}
fout<<s[kind][time]<<endl;
}
我写的C++的源代码,用DP,全部通过了
写的不好,见笑了