动态规划(dynamic programming)与分治算法相似,都是通过组合子问题的解来求解原问题。区别在于,分治算法是将原问题划分为互不相交的子问题,递归求解子问题,再把它们的解组合起来,求出原问题的解;动态规划应用于子问题重叠的情况,即不同的子问题具有公共的子问题(子问题的求解是递归进行的,将其划分为更小的子子问题),在这种情况下,分治算法会反复求解那些公共的子问题,而动态规划算法对每个子子问...
                            
                            
                                分类:
其他好文   时间:
2016-05-12 20:27:30   
                                阅读次数:
140
                             
                         
                    
                        
                            
                            
                                突然发现,钢条切割竟然没有写。假设公司出售一段长度为i英寸的钢条的价格为Pi(i = 1, 2, ...单位:美元),下面给出了价格表样例:长度i 1 2 3 4 5 6 7 8 9 10价格Pi 1 5 8 9 10 17 17 20 24 30切割钢条的问题是这样的:给定一段长度为...
                            
                            
                                分类:
其他好文   时间:
2015-11-22 17:14:02   
                                阅读次数:
194
                             
                         
                    
                        
                            
                            
                                钢条切割问题:给定一段长度为n英寸的钢条和一个价格表pi(i=1,2,...,n)求切割钢条方案,使得销售收益rn最大。 注意,如果长度为n英寸的钢条的价格pn足够大,最优解可能就是完全不需要切割。 思路:先将钢条切成两条,有n-1种方案,每一种方案的最优解都等于两个子钢条的最优解。我们从...
                            
                            
                                分类:
其他好文   时间:
2015-10-13 17:16:23   
                                阅读次数:
253
                             
                         
                    
                        
                            
                            
                                算法导论第15章:假设公司出售一段长度为i英寸的钢条的价格为Pi(i = 1, 2, ...单位:美元),下面给出了价格表样例:长度i 1 2 34 5 6 7 8 9 10价格Pi 1 5 89 10 17 17 20 24 30切割钢条的问题是这样的:给定一段长...
                            
                            
                                分类:
其他好文   时间:
2015-08-12 21:21:41   
                                阅读次数:
117
                             
                         
                    
                        
                            
                            
                                #includeusing namespace std;/*钢条切割:给定长度为1,2,3,4......10的价格pi算出给定一个长度为n的钢条怎样切割使其出售所得利润最大。*/int p[]={0,1,5,8,9,10,17,17,20,24,30};int r[100],s[100]; /.....
                            
                            
                                分类:
编程语言   时间:
2015-08-08 11:58:29   
                                阅读次数:
125
                             
                         
                    
                        
                            
                            
                                #include#includeusing namespace std;/*给出长度为i的钢条对应的出售价格为pi,问题:给定一段长度为n的钢条怎么切才会使收益最大;技巧:对于大量重复的子问题,我们采取记忆化,这样相比于之前大大节省了时间*/int p[100]={0,1,5,8,10,13,17,...
                            
                            
                                分类:
其他好文   时间:
2015-08-03 20:54:51   
                                阅读次数:
160
                             
                         
                    
                        
                            
                            
                                钢条切割问题的两种解法#ifndef IRON_CUT_PRB_H#define IRON_CUT_RPB_H#include int ironCutPrb(int *ironPrice,int Length); //这个是基于递规逄法的int ironCutPrb_optimize(int *ir...
                            
                            
                                分类:
其他好文   时间:
2015-07-17 20:57:42   
                                阅读次数:
115
                             
                         
                    
                        
                            
                            
                                在动态规划问题中,我们经常会遇到以下问题,最优解倒是求出来了,但是最优解的路径呢?如何输出?这确实是一个问题,而且往往比较难哟。。我这里说的路径是指,像在钢条切割问题中,从哪些地方切可以达到最优化,在矩阵链乘问题中,从哪些地方进行组合可以使效率最高?在钢条切割问题中:for(j=1;jprice){...
                            
                            
                                分类:
其他好文   时间:
2015-07-17 20:40:31   
                                阅读次数:
185
                             
                         
                    
                        
                            
                            
                                本文给出了动态规划的简要定义、适用场景、算法实现。并给出了四种经典动态规划:钢条切割求最大收益问题、矩阵链相乘求最小乘法次数问题、最长公共子序列问题、求最小的搜索代价的最优二叉搜索树的c++代码实现。定义
性质  适用条件
算法实现过程首先观察问题是否满足最优子结构性质
写出递归等式递归的定义子问题的最优解
求解子问题的最优解
构造最优解
四个经典问题的cpp实现
1 钢条切割
2 矩阵链相乘
3...
                            
                            
                                分类:
编程语言   时间:
2015-06-22 11:07:25   
                                阅读次数:
205
                             
                         
                    
                        
                            
                            
                                正式应用动态规划。
   
   适用于动态规划解决的问题应拥有以下两个要素:
 
1. 最优子结构(最佳选择)
2.子问题重叠(最终的最优解的每个分部步骤,都是当前最优的子解。与贪心算法试图通过局部最优解来组合成最优解的思想相似)
 
下面第一版代码中,依旧存在与上一篇第一版代码相同的问题——只能求解p数组中给出的最大限度。N>=10,代码就不能够求解出正确答案。(代码中你们都懂的...
                            
                            
                                分类:
编程语言   时间:
2015-06-08 09:47:46   
                                阅读次数:
361