hdu1114 完全背包

来源:互联网 发布:域名批量查询软件 编辑:程序博客网 时间:2024/05/21 12:05

完全背包的基础上变化了一点点

把这几题补完了,昨晚在宿舍打题时,有点懵

#include <cstdio>#include <algorithm>#include <iostream>#include <cstring> using namespace std;const int maxn = 507, maxW = 1e4 + 7; //最多507种货币int v[maxn], w[maxn]; int dp[maxW], n, c; //存钱罐净重c void CompletePack(int V[], int W[], int n) {for (int i = 0; i < n; ++i) {for (int j = W[i]; j <= c; ++j) {dp[j] = min(dp[j], dp[j - W[i]] + V[i]);}}}int main(){int T;scanf("%d", &T);while(T--) {int c0;scanf("%d%d", &c0, &c);c -= c0;scanf("%d", &n); for (int i = 0; i < n; ++i) {scanf("%d%d", v + i, w + i);}memset(dp, 0x3f, sizeof dp); //dp[j]表示净重量为j的存罐所装钱币的最小值 dp[0] = 0;CompletePack(v, w, n); //尴尬,开始忘了调用函数 if(dp[c] == 0x3f3f3f3f) {puts("This is impossible.");} else {printf("The minimum amount of money in the piggy-bank is %d.\n", dp[c]);}}return 0;}


原创粉丝点击