hdu1248 寒冰王座(完全背包)
来源:互联网 发布:中国网络域名注册 编辑:程序博客网 时间:2024/06/02 07:31
本题可以用完全背包做,但感觉背包就是大材小用。背包是指不同大小和价值的物品放入固定容量背包所得的最大价值,注意有两个变量。而本题只是衡量价值。为一个变量,所以暴力也可以。
暴力法:
#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;const int N = 1005;int main(){ // freopen("in.txt", "r", stdin); int T, i, j, k, n, num, maxx, a, b, c; scanf("%d", &T); while(T --) { scanf("%d", &n); a = n / 150; b = n / 200; c = n / 350; maxx = 0; for(i = 0; i <= a; i ++) for(j = 0; j <= b; j ++) for(k = 0; k <= c; k ++) { num = i * 150 + j * 200 + k * 350; if(num <= n) maxx = max(maxx, num); } printf("%d\n", n - maxx); } return 0;}
背包法:
把两个数组合并成一个即可,既然已给出物品价格,所以打表,最后第一个for遍历3次即可。注意数组开小现实的是超时而不是WA。
#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;const int N = 10005;int main(){ // freopen("in.txt", "r", stdin); int T, i, j, n, ans[N]; int val[3] = {150, 200, 350}; scanf("%d", &T); while(T --) { scanf("%d", &n); memset(ans, 0, sizeof(ans)); for(i = 0; i < 3; i ++) for(j = val[i]; j <= n; j ++) ans[j] = max(ans[j], ans[j - val[i]] + val[i]); printf("%d\n", n - ans[n]); } return 0;}
0 0
- hdu1248 寒冰王座(完全背包)
- HDU1248 寒冰王座(完全背包)
- hdu1248寒冰王座(完全背包)
- HDU1248 寒冰王座 (完全背包)
- HDU1248:寒冰王座(完全背包)
- hdu1248 寒冰王座 完全背包 简单
- 【完全背包】HDU1248寒冰王座
- hdu1248寒冰王座(完全背包)
- hdu1248 寒冰王座 完全背包以及其它做法
- HDU1248 寒冰王座 【数学题】or【完全背包】
- hdu1248寒冰王座【完全背包入门题】
- hdu1248 寒冰王座
- hdu1248寒冰王座
- hdu1248寒冰王座
- Hdu1248 寒冰王座
- HDU1248-寒冰王座
- HDU1248 寒冰王座
- HDU1248 寒冰王座
- BST 存储结构建立(插入)、删除、 查找算法的实现及应用
- Uva 673 2015.6.7
- Uva 10050 2015.6.7
- view文档的分栏
- LeetCode 2015.7.7 205,206,217,219,223,228,231,111,112
- hdu1248 寒冰王座(完全背包)
- LeetCode 2015.7.8 128,171,172,189,202,203,119
- bestcoder#71
- 一致性Hash算法
- 在MFC类中各种类的指针的获取和应用
- LeetCode 2015.7.9 66,67,70,83,88,100
- 杭电1059Windows Message Queue
- 2015年终总结和2016年的计划
- poj1741 Tree