讓背包裡面的物品總價值最大
- const int N = 100, W = 100000;
- int cost[N], weight[N];
- int c[W + 1]; // 只需要一條陣列就夠了
- void knapsack(int n, int w)
- {
- memset(c, 0, sizeof(c));
- for (int i = 0; i < n; ++i)
- for (int j = w; j - weight[i] >= 0; --j) // 由後往前
- c[j] = max(c[j], c[j - weight[i]] + cost[i]);
- cout << "最高的價值為" << c[w];
- }
留言
張貼留言