一、动态规划法
这有一篇讲的很好:http://blog.csdn.net/livelylittlefish/article/details/2186206#
JAVA仿写的例子:
public class Test { //背包中150 //七个物品 //物品 A B C D E F G //重量 35 30 60 50 40 10 25 //价值 10 40 30 50 35 40 30 private int[] weight=new int[]{0,35,30,60,50,40,10,25}; private int[] value =new int[]{0,10,40,30,50,35,40,30}; private int[] check=new int[8]; //保存动态的结果 public int getMaxValue(int n,int m,int[] weight,int[] value,int[]check){ int maxValue=0; int row=n+1; int col=m+1; //保存结果 int[][] result=new int[row][col]; for(int i=1;i<row;i++) for(int j=1;j<col;j++){ result[i][j]=result[i-1][j]; if(weight[i]<=j){ //这儿很关键 int temp=result[i-1][j-weight[i]]+value[i]; if(temp>result[i-1][j]) result[i][j]=temp; } // if(weight[i]<=j){ // int temp=result[i-1][j-weight[i]]+value[i]; // if(temp>result[i-1][j]) // result[i][j]=temp; // else{ // result[i][j]=result[i-1][j]; // } // }else{ // result[i][j]=result[i-1][j]; // } // maxValue=maxValue>result[i][j]?maxValue:result[i][j]; } int l=m; for(int k=row-1;k>0;k--){ if(result[k][l]>result[k-1][l]){ check[k]=1; l-=weight[k]; } } System.out.println(Arrays.toString(check)); return maxValue; } public int testResult(){ return getMaxValue(7, 150, weight, value,check); } public static void main(String[] args) { Test t=new Test(); System.out.println(t.testResult()); //System.out.println(-10>>3); } }
二、贪心算法
我现在对看到的理解是 1.首先对处理的实物要排序
2.就是当前感觉的最好结果
三、参考
http://www.cnblogs.com/chinazhangjie/archive/2010/11/23/1885330.html
相关推荐
动态规划和贪心算法的区别 动态规划和贪心算法是两种常用的算法思想,它们之间存在一定的关联和区别。在本文中,我们将详细介绍动态规划和贪心算法的定义、特点、区别和应用场景。 动态规划是一种算法思想,它通过...
贪心算法、分治算法和动态规划的区别 贪心算法、分治算法和动态规划是三种常用的算法设计策略,每种算法都有其特点和应用场景。下面我们将对这三种算法进行详细的比较和分析。 分治算法 分治算法是一种将原问题...
- **动态规划**和**贪心算法**都需要问题具备最优子结构这一性质。这意味着如果问题的最优解包含了子问题的最优解,则称该问题具有最优子结构性质。 - **动态规划**利用这种性质来构建子问题的解,并通过这些子...
这两种问题都可以通过动态规划和贪心算法来解决,每种方法都有其独特的优势和适用场景。 动态规划是一种强大的解决问题的方法,它通过将复杂问题分解为更小的子问题,然后存储和重用子问题的解来构建全局最优解。在...
活动安排问题的动态规划、贪心算法和树搜索算法求解。 比如有一个多媒体教室,现在有四个待举办活动A、B、C、D。A是在8:00到10:00举行,简单记为[8, 10];B是[12, 14];C是[15, 17];D是[11, 19]。为了让尽可能多的...
动态规划和贪心算法是两种常用且重要的算法思想,广泛应用于各种复杂问题的求解。同时,XML解析也是现代应用程序中处理数据交换的重要技术。让我们深入探讨这些主题。 动态规划(Dynamic Programming, DP)是一种...
会议安排(贪心算法和动态规划) 会议安排问题是计算机科学中的一种经典问题,目的是在一系列活动中选择尽可能多的活动,使得每个活动的结束时间不早于下一个活动的开始时间。这个问题可以使用贪心算法和动态规划两...
虽然动态规划和贪心算法都是解决优化问题的有效方法,但它们之间存在着本质区别: - **动态规划**:通过解决子问题并利用子问题的解来构建原问题的解。这种方法能够保证找到全局最优解,但通常需要更多的计算资源。...
贪心算法和动态规划的区别与联系 贪心算法和动态规划是两种常用的算法设计方法,它们都可以用于解决复杂的问题,但是它们之间存在着一些关键的区别和联系。 首先,让我们了解一下贪心算法和动态规划的定义。 贪心...
在IT领域,算法是解决问题的核心工具,而递归与分治策略、动态规划、贪心算法、回溯法、分支限界法以及随机化算法都是其中的重要组成部分。这些算法不仅适用于计算机科学,也在数据结构、优化问题和复杂计算中扮演着...
在计算机科学与算法设计领域,贪心算法、动态规划和分治法是三种常见的解决问题的方法,它们各自有着独特的策略和适用场景。本文将深入探讨这些算法之间的区别以及它们的优缺点。 首先,贪心算法是一种在每一步选择...
动态规划和贪心算法是两种在计算机科学中用于求解最优化问题的策略,它们各自有独特的适用场景和解决问题的方式。 动态规划是一种自底向上的解决问题的方法,它通过解决子问题来构建整体问题的最优解。动态规划的...
贪心算法和动态规划是两种常用的算法设计方法,它们都可以用来解决优化问题,但它们的解决思路和应用场景不同。 贪心算法是一种解决优化问题的算法,通过在每一步都做出当前看起来最优的选择,来获取全局最优解。...
本文将从多角度分析面试算法题餐馆问题,并对贪心算法和动态规划进行详细的解释。 一、问题描述 在餐馆中,我们需要安排桌子的分配,以便获得最大的收益。每个客人都有其对应的消费金额,桌子的容量也各不相同。...
在计算机科学领域,动态规划、回溯法和贪心算法是三种重要的问题解决策略,广泛应用于各种优化问题和复杂计算中。本实验文档详细探讨了这三种算法,并通过实际案例来帮助理解它们的工作原理和应用。 首先,动态规划...
ES6的JavaScript算法思想实现之分而治之、动态规划、贪心算法和回溯算法 一、分而治之算法思想实现 分而治之算法是一种常用的算法思想,它将原问题分解为多个小问题,解决小问题,然后将小问题的解决方案组合起来...
贪心算法和动态规划是计算机科学领域中解决优化问题的两大经典策略。它们在不同的问题场景中显示出各自的优势和局限性,为程序设计者提供了丰富的工具来寻找问题的最优解。 贪心算法的核心在于局部最优选择,即在每...
"贪心算法和动态规划(Java实现)" 贪心算法是一种常用的算法设计策略,它所做出的选择总是当前看来是最好的。贪心算法的设计关键是选择贪心策略,且必须具备无后效性,即某个状态以后的过程不会影响以前的状态,只...
贪心算法、动态规划和分治法的区别 贪心算法是指在当前看来是最好的结果,不考虑整体情况,只关心局部最优解。它从上往下,从顶部一步步最优,得到最后的结果,但不能保证全局最优解。贪心策略的选择也影响到结果。...
算法分析与设计实验-基于Vue3和Typescript实现的排序、动态规划、贪心算法、检索源码.zip算法分析与设计实验-基于Vue3和Typescript实现的排序、动态规划、贪心算法、检索源码.zip算法分析与设计实验-基于Vue3和...