c语言解决01背包问题示例代码
代码语言:c
所属分类:算法
代码描述:c语言解决01背包问题示例代码,01背包问题就是你需要选择一组物品放入一个背包,以使它们的总价值最大化,同时不超过背包的容量限制。
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
#include <stdio.h> int max(int a, int b) { return (a > b) ? a: b; } void knapsack(int values[], int weights[], int capacity, int n) { int dp[n + 1][capacity + 1]; int i, w; // 将变量声明移到循环外 for (i = 0; i <= n; i++) { for (w = 0; w <= capacity; w++) { if (i == 0 || w == 0) { dp[i][w] = 0; } else if (weights[i - 1] <= w) { dp[i][w] = max(values[i - 1] + dp[i - 1][w - weights[i - 1]], dp[i - 1][w]); } else { dp[i][w] = dp[i - 1][w]; } } } int max_value = dp[n][capacity]; int selected_items[n]; int item_count = 0; i = n; w = capacity.........完整代码请登录后点击上方下载按钮下载查看
网友评论0