0-1背包问题-C语言实现
2017-08-03 23:03
316 查看
测试用例
输入:
3 6
4 3 2
5.0 4.0 1.0
输出:
6
输入:
3 6
4 3 2
5.0 4.0 1.0
输出:
6
#include<stdio.h> #include<string.h> double binaryKnapsack(int numItems, int *w, double *v, int capacity) { int i, j; double Val[MaxC]; memset(Val, 0, sizeof(Val)); for (i = 0; i < numItems; ++i) for (j = capacity; j >= 0; j--) if (j >= w[i] && Val[j] < Val[j - w[i]] + v[i]) Val[j] = Val[j - w[i]] + v[i]; return Val[capacity]; } int main() { int i, n, C, w[MaxN]; double v[MaxN]; double ans; while (scanf("%d%d", &n, &C) != EOF) { for (i = 0; i < n; ++i) scanf("%d", &w[i]); for (i = 0; i < n; ++i) scanf("%lf", &v[i]); ans = binaryKnapsack(n, w, v, C); printf("%.1f\n", ans); } return 0; }
相关文章推荐
- 01背包问题(用c语言实现)-回溯法求解
- 背包问题的C语言实现
- [算法]背包问题的动态规划算法解答,C语言实现
- 01背包问题 动态规划 c语言实现
- DP实例之01背包问题C语言实现
- [算法]背包问题的经典算法和贪心算法解答,C语言实现
- 背包问题的C语言实现
- 0-1背包和背包问题(C语言实现)——贪心算法应用(3)
- 背包问题-C语言实现
- [算法]数据结构算法背包问题解法之递归解法,C语言实现
- [算法]简单的背包问题递归解法,C语言实现
- 0-1背包问题经典算法(递归实现)
- 贪心算法解决部分背包问题(C语言,ruby)
- 一次C语言实现过滤冗余字符出现的问题
- 0-1背包问题经典算法(二维数组实现)
- 生产者-消费者问题实现 (linux下C语言)
- 0-1背包问题递归和非递归实现
- 贪心法和回溯法 求解“背包、0/1背包问题”——Java 实现
- 哲学家进餐问题的C语言实现
- 用C语言实现“百鸡问题”的求解