您的位置:首页 > 其它

poj1384完全背包恰好装满

2017-03-23 20:09 239 查看
#include <cstdio>
#include <iostream>
#include <algorithm>
#define N 10050
using namespace std;

const int inf = 0x3f3f3f3f;
int n, v;//物品的种数,背包的容量
int dp
, c
, w
;

void init()//恰好装满的初始化
{
for (int i = 1; i <= v; i++)
dp[i] = inf;
dp[0] = 0;
}

int main()
{
freopen("e:\\input.txt", "r", stdin);
int T;
scanf("%d", &T);
while (T--)
{
int full, empty;
scanf("%d%d", &empty, &full);
scanf("%d", &n);
v = full - empty;
init();
for (int i = 1; i <= n; i++)
scanf("%d%d", &w[i], &c[i]);
for (int i = 1; i <= n; i++)
for (int j = c[i]; j <= v; j++)
dp[j] = min(dp[j], dp[j - c[i]] + w[i]);//表示放与不放
if (dp[v] == inf)
printf("This is impossible.\n");
else
printf("The minimum amount of money in the piggy-bank is %d.\n", dp[v]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  动态规划