![]() | ||||||||||
提交 2 / 6 题 (33%) 首页 站务 公告 数据 评测机 | 题库 分类 记录 测试 排名 团队 讨论 | User Space 换肤|登出 | ||||||||||
|
![]() Tyvj Information ---- Total Users : 9639 | Online Users / Processes : 212 / 235 | Processed Time : 8 ms | Server Time : 2010-10-2 20:38:34 |
#include<iostream>
#include<cstring>
using namespace std;
int num[105];//每株草药的价值
int time[105];//采每株草药所花的时间
int maxvalue[1001][1001];//二维数组记录状态
int main()
{
int t,m;
cin>>t>>m;
for(int i=1;i<=m;i++)
{
cin>>time[i]>>num[i];
}
memset(maxvalue,0,sizeof(maxvalue));
for(int i=1;i<=m;i++)
for(int j=1;j<=t;j++)//maxvalue[i][j]表示把前i个草药放入容量为j的背包中的最大容量
{
if(j>=time[i])//第i个草药所用时间小于j,否则不采,maxvalue[i][j]=maxvalue[i-1][j]
{
if(maxvalue[i-1][j-time[i]]+num[i]>maxvalue[i-1][j])//状态转移
maxvalue[i][j]=maxvalue[i-1][j-time[i]]+num[i];
else
maxvalue[i][j]=maxvalue[i-1][j];
}
else
maxvalue[i][j]=maxvalue[i-1][j];
}
cout<<maxvalue[m][t]<<endl;
return 0;
}