• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

背包问题c++动态规划方式

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

2021年12月1日更新 java

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 计算01背包问题的结果
     * @param V int整型 背包的体积
     * @param n int整型 物品的个数
     * @param vw int整型二维数组 第一维度为n,第二维度为2的二维数组,vw[i][0],vw[i][1]分别描述i+1个物品的vi,wi
     * @return int整型
     */
    public int knapsack (int V, int n, int[][] vw) {
        int[] maxV = new int[V+1];
        for(int j=V;j>=0;j--) {
            maxV[j] = 0;
        }
        for(int i=0;i<n;i++) {
            for(int j=V;j>=vw[i][0];j--) {
                if (maxV[j] < vw[i][1] + maxV[j-vw[i][0]]) {
                    maxV[j] = maxV[j-vw[i][0]] + vw[i][1];
                }
            }
        }
        return maxV[V];
    }
}
#include <iostream> using namespace std;

int weight[5] = {5,2,4,8,6};
int len[5] = {2,4,3,1,7};
int num = 5;
int space = 15;

int main() {
int max_weight[15] = {0};
for(uint32_t i=0; i<num;i++) {
for(uint32_t j=space; j>len[i]; j--) {
if (max_weight[j-len[i]] + weight[i] > max_weight[j]) {
max_weight[j] = max_weight[j-len[i]] + weight[i];
}
}
for(uint32_t j=0; j<space; j++) {
cout<<max_weight[j]<<" ";
}
cout<<endl;

    }
    cout&lt;&lt;max_weight[14]&lt;&lt;endl;
    return 0;

}

  结果

0 0 0 5 5 5 5 5 5 5 5 5 5 5 5
0 0 0 5 5 5 5 7 7 7 7 7 7 7 7
0 0 0 5 5 5 9 9 9 9 11 11 11 11 11
0 0 8 8 13 13 13 17 17 17 17 19 19 19 19
0 0 8 8 13 13 13 17 17 17 17 19 19 19 23
23

  


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C语言共用体发布时间:2022-07-13
下一篇:
Atitit.sql ast 表达式 语法树 语法 解析原理与实现 java php c#.net js py ...发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap