`
爱在爪哇
  • 浏览: 7835 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

动态规划之-0-1背包问题

阅读更多
package cn.gao.algorithm2.service;

public class Test7 {

	/**
	 * @param args
	 * 动态规划问题,0-1背包问题
	 * f[i,j]表示在前 i 件物品中选择若干件放在所剩空间为 j 的背包里所能获得的最大价值 
	 * f[i,j]=max{f[i-1,j-Wi]+Pi (j>=Wi), f[i-1,j]} 
	 * 核心思想是:对于第N件物品放或者不放;
	 */
	public static int f(int a[],int b[],int i,int j)/*参数依次为物品重量数组,物品价值数组,物品的数量,剩余背包的重量*/
	{
		if(i==1)
		{
			 if(j>=a[i-1])
			 {
				 return b[i-1];	 
			 }
			 else
			 {
				 return 0;
			 }
		}
	    if(a[i-1]>j)/*第i个物品大于背包重量,直接丢弃*/
	    {
	    	return f(a,b,i-1,j);
	    }
	    else{/*在可选取第i件物品时候,取 选和不选 这二种情况的最大值*/
	    	
	    	return f(a,b,i-1,j-a[i-1])+b[i-1]>f(a,b,i-1,j)?f(a,b,i-1,j-a[i-1])+b[i-1]:f(a,b,i-1,j);
	    }
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
          int a[]={1,3,5,7,9};
          int b[]={8,6,4,2,1};
          int weigth=15;
          System.out.println(f(a,b,a.length,weigth));
	}

}

 

0
0
分享到:
评论

相关推荐

    动态规划法求解0-1背包问题实验报告.pdf

    0-1背包问题是一个经典的优化问题,主要涉及动态规划算法的运用。在这个实验报告中,学生使用Java语言解决了一个0-1背包问题的实例。以下是关于这个问题和解决方案的详细解释。 一、问题描述: 0-1背包问题的核心是...

    动态规划解决0-1背包问题

    动态规划是一种有效的算法设计策略,尤其适用于解决具有重叠子问题和最优子结构的问题,而0-1背包问题就是这种策略的一个典型应用。0-1背包问题是一个经典的组合优化问题,它源自实际生活中的资源分配问题,比如在...

    动态规划求解0-1背包问题的改进算法完整解释

    动态规划求解0-1背包问题的改进算法完整解释 在计算机算法设计与分析中,动态规划法是解决背包问题的常用方法之一。所谓背包问题,是指在有限的背包容量下,如何选择物品来达到最大价值的问题。在本文中,我们将对...

    动态规划法解0-1背包问题

    算法实验中用动态规划法解0-1背包问题,这里提供了源代码,仅供参考

    0-1背包问题(动态规划)

    利用动态规划方法求解经典0-1背包问题,仅供参考,欢迎指正

    动态规划法解决0-1背包问题

    基于MATLAB平台,用动态规划法解决0-1背包问题,较为简单。参数分别为[物品重量,物品价值,背包容量,背包价值]

    北京工业大学--算法作业2--动态规划算法实现0-1背包问题---Java

    北京工业大学--算法作业2--动态规划算法实现0-1背包问题---Java代码 利用动态规划算法实现0-1背包问题或装配线调度问题。(二选一) 要求测试数据以文本文件的形式存储, 即所有的数据由文本文件读入。 利用动态...

    算法设计动态规划0-1背包

    动态规划是解决0-1背包问题的有效方法。 动态规划是一种通过将大问题分解为相互重叠的小问题来求解的方法。在0-1背包问题中,我们可以用一个二维数组dp来存储子问题的解。dp[i][w]表示在前i个物品中选择总重量不...

    动态规划法和回溯法求0-1背包问题

    ### 动态规划法与回溯法解决0-1背包问题 #### 一、实验目的与背景 0-1背包问题是一种经典的组合优化问题,在实际应用中有着广泛的用途,例如资源分配、投资组合等问题都可以抽象成背包问题的形式。本实验旨在通过...

    C++ 动态规划算法实现0-1背包问题

    在计算机科学中,0-1背包问题是一个经典的动态规划实例,它模拟了如何在一个容量有限的背包中选择物品以最大化价值,而每个物品都有其特定的重量和价值,并且物品要么不被选中(0),要么被完全放入背包(1)。...

    改进动态规划跳跃点之0-1背包问题python实现

    这个是动态规划之跳跃点0-1背包问题,如果只是想要动态规划0-1背包问题求解代码,请到主页查看。18级学姐自主完成的算法作业,呕心沥血,基于四舍五入等于0基础的python实现,如果在语言规范上存在不足,那就。就憋...

    0/1背包问题 动态规划 Java代码实现

    动态规划不仅在0/1背包问题中应用广泛,还可以应用于其他问题,如最长公共子序列、最短路径问题等。其核心思想是避免重复计算,通过存储中间结果来提高效率。在Java编程中,熟练掌握动态规划可以有效解决复杂度较高...

    动态规划求0-1背包问题c++代码

    提供0-1背包问题c++代码,实现功能如下: /**输入参数: * @param m 表示背包的最大容量 * @param n 表示商品个数 * @param a[] 每个商品的容量 * @param p[] 每个商品的价值 */ /**输出: 求最大商品value*/

    0-1背包问题 动态规划法——C语言代码

    对于0-1背包问题,动态规划的解决方案通常包括以下步骤: 1. 初始化:创建一个二维数组`dp`,其中`dp[i][j]`表示在前`i`件物品中选择总重量不超过`j`的物品所能得到的最大价值。初始化时,`dp[0][j] = 0`,因为没有...

    动态规划-0-1背包问题

    0-1背包问题是最基础且经典的动态规划问题之一,它涉及到在有限的资源限制下如何做出最佳选择,以达到最大的收益。在这个问题中,我们面对的是一个背包,可以放入不同重量和价值的物品,目标是使装入背包的物品总...

    动态规划解决0-1背包问题(c++)

    背包的重量有限,每次只可取一种商品。利用动态规划实现所选商品总价值的最大值。

    算法-动态规划- 背包问题 P04- 混合背包(包含源程序).rar

    总之,混合背包问题是一种结合了0-1背包和完全背包特性的优化问题,通过动态规划方法可以有效地求解。在实际应用中,这种问题可以出现在资源分配、任务调度等众多领域,掌握动态规划的思想对于解决这类问题至关重要...

    0-1背包_0-1背包问题_背包算法_背包_

    在"0-1背包.txt"文件中,可能包含了具体的代码示例或更详细的解释,用于阐述如何用回溯法或动态规划实现0-1背包问题的解法。通过阅读和理解这份文件,你可以进一步深化对0-1背包问题的理解,并学习到如何将其应用于...

Global site tag (gtag.js) - Google Analytics