这是一个背包的基本模型
先是二维的
#include<iostream>
#include<fstream>
#include<algorithm>
using namespace std;
int T,n,t[105],v[105],f[105][1005];
int main()
{
cin>>T>>n;
for(int i=1;i<=n;i++) cin>>t[i]>>v[i];
for(int i=1;i<=n;i++)
{
for(int j=t[i];j<=T;j++)
f[i][j]=max(f[i-1][j-t[i]]+v[i],f[i-1][j]);
for(int j=0;j<t[i];j++)
f[i][j]=f[i-1][j];
}
cout<<f[n][T];
return 0;
}
No explanation. :D
一维的
#include<iostream>
#include<fstream>
#include<algorithm>
using namespace std;
int T,n,t[105],v[105],f[1005];
int main()
{
cin>>T>>n;
for(int i=1;i<=n;i++) cin>>t[i]>>v[i];
for(int i=1;i<=n;i++)
{
for(int j=T;j>=t[i];j--)
f[j]=max(f[j-t[i]]+v[i],f[j]);
}
cout<<f[T];
return 0;
}
其实我觉得一维反倒好理解一些 @_@
水 一篇题解~