您的位置:首页 > 其它

程设模拟考 H:宠物小精灵之收服

2013-06-16 15:56 274 查看
题目见此:http://cxsjsx.openjudge.cn/2013weekend5a/H/

解题思路:

典型的01背包,不过是二维限制的

最后要把V2扫一遍找伤血最少的情况

贴代码:

#include <iostream>
#include <algorithm>
using namespace std;

int N, V, V2, dp[1000][500]={0}, c1[100], c2[100];

int main()
{
cin >> V >> V2 >> N;
for(int i=1 ; i<=N ; i++)
cin >> c1[i] >> c2[i];
dp[0][0] = 0;
for(int i=1 ; i<=N ; i++)
for(int j=V ; j>=c1[i] ; j--)
for(int k=V2 ; k>=c2[i] ; k--)
dp[j][k] = max(dp[j][k], dp[j-c1[i]][k-c2[i]]+1);
for(int k=0 ; k<=V2 ; k++)
if(dp[V][k] == dp[V][V2])
{
cout << dp[V][k] << " " << V2-k << endl;
break;
}
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: