背包问题 算法实现

动态规划算法 

package algorithm;

public class T7_21 {
    public static void main(String[] args){
        int s[] = {2,3,5,6};
        int v[] = {3,4,5,7};
        int C =11;

        System.out.println(big(s,v,C));
    }

    public static int big(int[] s,int [] v,int C){
        int L_s = s.length;
        int V[][] = new int[100][100];
        for(int i =0;i<=L_s;i++){
            V[i][0] = 0;
        }
        for(int j =0;j<=C;j++){
            V[0][j] = 0;
        }
        for(int i =1;i<=L_s;i++){
            for(int j =1;j<=C;j++){
                V[i][j] = V[i-1][j];
                if(s[i-1]<=j){
                    V[i][j] = V[i][j]>(V[i-1][j-s[i-1]]+v[i-1])?V[i][j]:(V[i-1][j-s[i-1]]+v[i-1]);
                }
            }
        }
        for(int i =0;i<=L_s;i++){
            for(int j = 0;j<=C;j++){
            System.out.printf("%3d",V[i][j]);}
            System.out.println();
        }
        System.out.print("          背包的最大价值为:");
        return V[L_s][C];
    }

}

 

时间: 2024-06-12 10:21:08

背包问题 算法实现的相关文章

c++-背包问题算法流程图及时间复杂度

问题描述 背包问题算法流程图及时间复杂度 #include "iostream" #include "vector" #include "cstring" using namespace std; class PackEnum { protected: vector<int> m_p; vector<int> m_w; int m_c; int m_num; public: PackEnum(); PackEnum(vec

0-1背包问题思想的算法题目

题目概述 经过抽签选择, 小智将军第一个进入考场. 菜虫: (身上散射出华贵(?)的光芒)欢迎你, 第一位挑战者!! 小智: --(走到菜虫身后, 关灯)女王陛下, 虽然我们国家现在很富裕, 但也请您不要浪费电来用这么大功率的灯泡. 菜虫(汗): 啊啊~~爱卿所言甚是~~那么, 你的题目是--我们的情报组织探听到敌人的重要将领--小飞侠星期天会邀他的灵儿妹妹到公园去玩. 公园里有很多娱乐项目, 可并不是每一项他们都喜欢, 所以他们对每一项都进行了"喜欢度"的评分. 因为小飞侠也是一个了

【算法导论】贪心算法之背包问题

        在讨论贪心算法时,我们先了解贪心算法与动态规划之间的区别与联系,后面我们将发现可以用0.1背包问题和部分背包问题来比较贪心算法和动态规划的关系.         我们知道,对于一个最优解问题,贪心算法不一定能够产生一个最优解.因为,如果想要采用贪心算法得到最优解需要满足两个条件:贪心选择性质.最优子结构.         贪心选择性质:一个全局最优解可以通过局部最优解来得到.that is to say,当考虑如何做选择时,我们只考虑对当前问题最佳的选择而不考虑子问题的结果.  

C#算法.01背包问题.这个代码要怎么改?

问题描述 publicclasstest{publicstaticvoidMain(){int[]v={1,2,3};//每件物品的价值int[]w={1,2,3};//每件物品的重量Console.WriteLine("xxxxxmaximumvalueis:{0}",fetch(v,w,5));}privatestaticintfetch(int[]v,int[]w,intj)//初始时i=物品数量,j=背包总容量{inti=w.Count()-1;returnfetch(v,w,

第十六章 贪心算法——0/1背包问题

 1.问题描述:      给定n种物品和一背包.物品i的重量是wi,其价值为vi,背包的容量为C.问:应如何选择装入背包的物品,使得装入背包中物品的总价值最大?      形式化描述:给定c >0, wi >0, vi >0 , 1≤i≤n.要求找一n元向量(x1,x2,-,xn,), xi∈{0,1}, ∋ ∑ wi xi≤c,且∑ vi xi达最大.即一个特殊的整数规划问题.        2.最优性原理:      设(y1,y2,-,yn)是 (3.4.1)的一个最优解.则(y

[算法系列之二十九][背包问题]01背包

题目 有N件物品和一个容量为V的背包.第i件物品的费用是c[i],价值是w[i].求解将哪些物品装入背包可使价值总和最大. 基本思路 这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放. 用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值. 状态转移方程: f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]} 这个方程非常重要,基本上所有跟背包相关的问题的方程都是由它衍生出来的. 所以有必要将它详细解释一下:"

【算法数据结构Java实现】Java实现动态规划(背包问题)

1.背景      追随着buptwusuopu大神的脚步,最近在研习动态规划.动态规划应该叫一种解决问题的思想,记得又一次去某公司面试就被问到了这个.        多于动态规划的理解,大致是这样的,从空集合开始,每增加一个元素就求它的最优解,直到所有元素加进来,就得到了总的最优解.             比较典型的应用就是背包问题,有一个重量一定的包,有若干件物品,他们各自有不同的重量和价值,怎样背才能取得最大价值.        错误的理解:去价值/重量比最大的物品多装(之前我也是这么想

数据挖掘十大经典算法(详解)

数据挖掘十大经典算法  一. C4.5  C4.5算法是机器学习算法中的一种分类决策树算法,其核心算法是ID3 算法.   C4.5算法继承了ID3算法的优点,并在以下几方面对ID3算法进行了改进:  1) 用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足:  2) 在树构造过程中进行剪枝:  3) 能够完成对连续属性的离散化处理:  4) 能够对不完整数据进行处理.  C4.5算法有如下优点:产生的分类规则易于理解,准确率较高.其缺点是:在构造树的过程中,需要对数据

部分和问题算法 代码(C)

题目: 给定整数a1, a2, ..., an, 判断是否可以从中选出若干数, 使它们的和恰好为k. 解法很多, 最简单的解法是使用深度优先搜索, 时间复杂度O(2^n), 不是最优解法. 代码: /* * main.cpp * * Created on: 2014.7.13 *本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/sjjg/ * Author: Spike */ /*eclipse cdt, gcc