精华内容
下载资源
问答
  • 2018-04-08 16:16:35

    符合动态规划的几个特征:

    • 最优子结构性质。如果问题的最优解所包含的子问题的解也是最优的,我们就称该问题具有最优子结构性质(即满足最优化原理)。最优子结构性质为动态规划算法解决问题提供了重要线索。
    • 无后效性。即子问题的解一旦确定,就不再改变,不受在这之后、包含它的更大的问题的求解决策影响。
    • 子问题重叠性质。子问题重叠性质是指在用递归算法自顶向下对问题进行求解时,每次产生的子问题并不总是新问题,有些子问题会被重复计算多次。动态规划算法正是利用了这种子问题的重叠性质,对每一个子问题只计算一次,然后将其计算结果保存在一个表格中,当再次需要计算已经计算过的子问题时,只是在表格中简单地查看一下结果,从而获得较高的效率。


    https://blog.csdn.net/eraser567/article/details/50715746

    更多相关内容
  • 动态规划-基本思想

    2021-11-19 14:12:17
    一、基本思想和策略 通常用于求解具有最优性质的问题,跟分治法类似,基本思想也是将待求解问题分解成若干个子问题,用子问题的解得到原问题的解。 与分治法不同的是,动态规划求解...二、适用情况和基本特征 ...

    一、定义

    动态规划(Dynamic Programming,DP)是运筹学的一个分支,是求解决策过程最优化的过程。20世纪50年代初,美国数学家贝尔曼(R.Bellman)等人在研究多阶段决策过程的优化问题时,提出了著名的最优化原理,从而创立了动态规划。动态规划的应用极其广泛,包括工程技术、经济、工业生产、军事以及自动化控制等领域,并在背包问题、生产经营问题、资金管理问题、资源分配问题最短路径问题和复杂系统可靠性问题等中取得了显著的效果 。 

    二、基本思想和策略

            通常用于求解具有最优性质的问题,跟分治法类似,基本思想也是将待求解问题分解成若干个子问题,用子问题的解得到原问题的解。

            与分治法不同的是,动态规划求解的问题,子问题往往不是相互独立的,若用分治法解这类问题,分解得到的子问题太多,有些子问题,重复计算很多次。

            如果能保存已解决子问题的解,需要时找出已求解的解,就可以避免大量重复计算,所以可以用一个表来记录已求解子问题的解,这就是动态规划的基本思路。

    三、适用情况和基本特征

            适用动态规划算法必须满足最优化原理、无后效性和子问题重叠性

    1. 最优化原理(最优子结构性质)

            即一个最优化策略具有这样的性质,不论之前的状态和决策如何,对之前决策所形成的状态,后边的决策必须构成最优策略。也就是说,一个最优化策略的子策略总是最优的。一个问题满足最优化原理又称其具有最优子结构性质。

    2. 无后效性

            即某阶段状态一旦确定,就不受这个状态之后决策的影响,某状态之后的过程不会影响之前的状态,换句话说,每个状态都是过去历史的一个完整总结,这就是无后向性,又称为无后效性。

    3. 子问题重叠性

            即子问题之间不是相互独立的,一个子问题可能在之后决策中被多次用到。

    四、算法特点总结

            动态规划将原来具有指数级时间复杂度的搜索算法,改进成了具有多项式时间复杂度的算法。其中的关键就是解决冗余,这是动态规划的根本目的。动态规划实质上是一种以空间换时间的技术,不得不存储各种状态,所以它的空间复杂度要大于其他算法。

            到底什么时候用动态规划:当每个阶段的最优状态可以从之前某个阶段的某个或者某些状态直接得到,而不管之前这个状态是如何得到的。

    五、解题步骤 

    1. 将原问题分解为子问题(注意:1,子问题与原问题形式相同或类似,只是问题规模变小了,从而变简单了; 2,子问题一旦求出就要保存下来,保证每个子问题只求解一遍)
    2. 确定状态(状态:在动规解题中,我们将和子问题相关的各个变量的一组取值,称之为一个"状态",一个状态对应一个或多个子问题所谓的在某个状态的值,这个就是状态所对应的子问题的解,所有状态的集合称为"状态空间".我的理解就是状态就是某个问题某组变量,状态空间就是该问题的所有组变量) 另外:整个问题的时间复杂度就是状态数目乘以每个状态所需要的时间
    3. 确定一些初始状态(边界条件)的值 (这个视情况而定,千万别以为就是最简单的那个子问题解,上面只是例子,真正实践动规千变万化)
    4. 确定状态转移方程 (这一步和第三步是最关键的 记住"人人为我"递推,由已知
    展开全文
  • 基本概念 阶段:将所有问题的过程, 按时间或空间特征分解成若干相互联系的阶段,以便按次序去求每个阶段的解。常用字母k表示。...如果所选定的变量不具备无后效性,就不能作为状态变量来构造动态规划模型
    基本概念
    • 阶段:将所有问题的过程, 按时间或空间特征分解成若干相互联系的阶段,以便按次序去求每个阶段的解。常用字母k表示。
    • 状态:各阶段开始时的客观条件,状态用变量 S k S_k Sk 表示。如 S 2 = { A , B } S_2=\{ A,B \} S2={A,B}
    • 无后效性:当某阶段状态给定后,在这阶段以后过程的发展不受以前各段状态的影响,就是说,当前的状态是过去历史的一个完整的终结
      • 过程的过去历史只能通过当前状态去影响它未来的发展
      • 如果所选定的变量不具备无后效性,就不能作为状态变量来构造动态规划模型
        在这里插入图片描述

    • 决策:确定下一阶段的状态
    • 表示决策的变量称为决策变量
    • U k ( S k ) U_k(S_k) Uk(Sk) 表示第k阶段的状态为 S k S_k Sk 时的决策变量,它是状态变量的函数
    • 决策变量的取值往往限制在一定范围内,我们称此范围为 允许决策集合 常用 D k ( S k ) D_k(S_k) Dk(Sk) 表示
    • 显然 U k ( S k ) ∈ D k ( S k ) U_k(S_k) \in D_k(S_k) Uk(Sk)Dk(Sk)

    • 策略:各段决策确定后,整个问题的决策序列就构成一个决策序列 P 1 , n ( S 1 ) = { u 1 ( s 1 ) , u 2 ( s 2 ) . . . , u n ( s n ) } P_1,n(S_1) =\{u1(s1),u_2(s_2)...,u_n(s_n) \} P1,n(S1)={u1(s1),u2(s2)...,un(sn)}
    • 对于每个实际问题,可供选择的策略有一定的范围,称为 允许策略集合
    • 使整个问题达到最优效果的策略就是最优策略
    • 状态转移方程:确定过程由一个状态到另一个状态的演变过程。若给定第k阶段状态变量 S k S_k Sk 的值,如果该段的决策变量 U k ( S k ) U_k(S_k) Uk(Sk) 一经确定,第k+1阶段的状态变量 S k + 1 S_{k+1} Sk+1 的值也就完全确定
      在这里插入图片描述

    • 指标函数:用来衡量所选定策略优劣的数量指标
    • 分为两种:阶段指标函数和过程指标函数
    • 阶段指标函数:从状态 S k S_k Sk 出发,采取决策 U k U_k Uk 时的效益。用 V k ( S k , U k ) V_k(S_k,U_k) Vk(Sk,Uk) 表示
    • 对于一个n段决策过程,从1到n叫问题的原过程
    • 对于一个任意给定的 K ( 1 ≤ k ≤ n ) K( 1\leq k\leq n ) K1kn,从第k段到第n段的过程称为原过程的一个后部子过程
    • V 1 , n ( s 1 , P 1 , n ) V_{1,n}(s_1,P_{1,n}) V1,n(s1,P1,n) :表示初始状态为 s 1 s_1 s1 采用策略为 P 1 , n P_{1,n} P1,n时原过程的指标函数值
    • V k , n ( s k , P k , n ) V_{k,n}(s_k,P_{k,n}) Vk,n(sk,Pk,n) :表示初始状态为 s k s_k sk 采用策略为 P k , n P_{k,n} Pk,n 时后部子过程的指标函数值
    • 最优指标函数 f k ( S k ) f_k(S_k) fk(Sk) 表示从第k段状态 S k S_k Sk 采用最优策略 P k , n ∗ P_{k,n}^* Pk,n 到过程终止时的最优指标函数值
    • f k ( S k ) f_k(S_k) fk(Sk) V k , n ( S k , P k , n ) V_{k,n}(S_k,P_{k,n}) Vk,n(Sk,Pk,n) 的关系:
    • f k ( S k ) = V k , n ( S k , P k , n ∗ ) = o p t V k , n ( S k , P k , n ) f_k(S_k) = V_{k,n}(S_k,P_{k,n}^*) = opt V_{k,n}(S_k,P_{k,n}) fk(Sk)=Vk,n(Sk,Pk,n)=optVk,n(Sk,Pk,n) opt:min或max
    • 最优值函数表示从第k阶段的状态 S k S_k Sk 开始到第n阶段的终止状态的过程,采取最优策略所得到的指标函数值
    例子:求从A到E的最短路问题

    在这里插入图片描述

    逆推解法:
    基本思路:逆着阶段顺序的方向,由后向前推算。

    • 把寻求最优策略看作连续递推过程,从最终阶段开始,逆着实际过程的进展方向逐段求解
    • 在每一阶段求解过程中都是其后部子过程最优策略的基础上,再考虑阶段的指标函数,求出本阶段的最优策略
    • 直到第一阶段为止

    动态规划逆序解法的基本方程(都是利用了第k段和第k+1段的关系)

    动态规划最优指标的递推方程,是动态规划的基本方程
    f k ( S k ) = o p t { V k ( S k , U k ) + f k + 1 ( S k + 1 ) } f_k(S_k) = opt\{V_k(S_k,U_k)+f_{k+1}(S_{k+1})\} fk(Sk)=opt{Vk(Sk,Uk)+fk+1(Sk+1)} k=n,……,2,1

    f n + 1 ( S n + 1 ) = 0 f_{n+1}(S_{n+1}) = 0 fn+1(Sn+1)=0 0表示终端(边界)条件:为了使以上的递推方程有递推的起点

    动态规划基本方程的五个基本要素:

    • 将多阶段决策过程划分成恰当的阶段
    • 正确选取状态变量,使其满足无后效性
    • 确定决策变量及每阶段的允许决策集合
    • 正确写出状态转移方程
    • 正确写出指标函数的关系
    展开全文
  • 文章目录1.序2.动态规划基本概念[^1]3.动态规划算法的基本思想[^2]4....这篇文章主要介绍动态规划算法的基本思想、使用动态规划算法求解问题的基本步骤、动态规划算法的两个基本要素以及一些经典的动态规划问题。...

    1.序

    近期笔者会写一些博客,与大家共同讨论一些经典的算法思想。这篇文章主要介绍动态规划算法的基本思想、使用动态规划算法求解问题的基本步骤、动态规划算法的两个基本要素以及一些经典的动态规划问题。

    2.动态规划的基本概念[^1]

    在学习动态规划之前,先思考这样一个问题:什么是动态规划?为什么叫动态规划?
    当读者在试图探索这个问题的时候,不可避免的要了解动态规划的产生背景。动态规划是由 Dynamic Programming 翻译过来的。动态规划的概念是由美国数学家R.E.Bellman等人提出的,应用于工程领域。
    动态规划是是求解多阶段决策过程(decision process)的最优化问题一种方法。

    所谓多阶段决策过程是指这样一类决策过程:它可以把一一个复杂问题按时间(或空间)分成若干个阶段,每个阶段都需要作出决策,
    以便得到过程的最优结局。由于在每阶段采取的决策是与时间有关的而且前一阶段采取的决策如何,不但与该阶段的经济效果有关,
    还影响以后各阶段的经济效果,可见这类多阶段决策问题是一个动态的问题,因此,处理的方法称为动态规划方法。然而,动态
    规划也可以处理一些本来与时间没有关系的静态模型,这只要在静态模型中人为地引入“时间”因素,分成时段,就可以把它看作
    是多阶段的动态模型,用动态规划方法去处理。
    

    简言之,多阶段决策过程是指这样的一类特殊的活动过程:问题可以按时间顺序分解成若干相互联系的阶段,在每一个阶段都要做出决策,全部过程的决策是一个决策序列。
    下面举例说明什么是多阶段决策问题。
    例1(最短路线问题)在线路网络图1中,从A至E有一批货物需要调运。图上所标数字为各节点之间的运输距离,为使总运费最少,必须找出一条由A至E总里程最短的路线。
    在这里插入图片描述

    图1

    为了找到由A至E的最短线路,可以将该问题分成A—B—C—D—E 4个阶段,在每个阶段都需要作出决策,即在A点需决策下一步到B1还是到B2或B3;同样,若到达第二阶段某个状态,比如B1 ,需决定走向C1还是C2 ;依次类推,可以看出:各个阶段的决策不同,由A至E的路线就不同,当 从某个阶段的某个状态出发作出一个决策,则这个决策不仅影响到下一个阶段的距离,而且直接影响后面各阶段的行进线路。所以这类问题要求在各个阶段选择一个恰当的决策,使这些决策序列所决定的一条路线对应的总路程最短。

    3.动态规划算法的基本思想[^2]

    动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题。
    在这里插入图片描述

    图2

    但是经分解得到的子问题往往不是互相独立的。不同子问题的数目常常只有多项式量级。在用分治法求解时,有些子问题被重复计算了许多次。
    如果能够保存已解决的子问题的答案,而在需要时再找出已求得的答案,就可以避免大量重复计算,从而得到多项式时间算法。
    在这里插入图片描述

    图3

    4.动态规划的求解步骤[^2]

    a. 找出最优解的性质,并刻划其结构特征。
    b. 递归地定义最优值。
    c. 以自底向上的方式计算出最优值。
    d. 根据计算最优值时得到的信息,构造最优解

    5.动态规划算法的基本要素[^2]

    5.1 最优子结构

    • 矩阵连乘计算次序问题的最优解包含着其子问题的最优解。这种性质称为最优子结构性质
    • 在分析问题的最优子结构性质时,所用的方法具有普遍性:首先假设由问题的最优解导出的子问题的解不是最优的,然后再设法说明在这个假设下可构造出比原问题最优解更好的解,从而导致矛盾。
    • 利用问题的最优子结构性质,以自底向上的方式递归地从子问题的最优解逐步构造出整个问题的最优解。最优子结构是问题能用动态规划算法求解的前提。

    注意:同一个问题可以有多种方式刻划它的最优子结构,有些表示方法的求解速度更快(空间占用小,问题的维度低)

    5.2 重叠子问题

    • 递归算法求解问题时,每次产生的子问题并不总是新问题,有些子问题被反复计算多次。这种性质称为子问题的重叠性质。
    • 动态规划算法,对每一个子问题只解一次,而后将其解保存在一个表格中,当再次需要解此子问题时,只是简单地用常数时间查看一下结果。
    • 通常不同的子问题个数随问题的大小呈多项式增长。因此用动态规划算法只需要多项式时间,从而获得较高的解题效率。
      在这里插入图片描述
      图4

    6.一些经典的动态规划问题

    题目描述:
    给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。

    示例 1:

    输入: "babad"
    输出: "bab"
    注意: "aba" 也是一个有效答案。
    

    示例 2:

    输入: "cbbd"
    输出: "bb"
    

    分析:
    一个问题要使用动态规划求解,一定要满足【最优子结构】,只有满足最优子结构,才能通过子问题的解 构造出 整个问题的解。

    在编码时,一般采用【备忘录】或 dp table来实现。
    最关键的要找出:该问题的递推关系式(状态转移方程)

    假设dp[i][j]=true,表示字符串s从s[i]到s[j]的子串为最长回文子串
    反之false.

    考虑 abcba 这个示例。如果我们已经知道 bca 是回文,那么要判断 abcba 是不是回文串,只需判断它的左首字母和右尾字母是否相等。这里左=右=a,因此abcba 是回文串

    从这里我们可以归纳出状态转移方程
    dp[i][j] = true
    前提是
    dp[i+1][j-1]为true,且 s[i] == s[j]

    #include <iostream>
    using namespace std;
    class MySolution {
    public:
        string longestPalindrome(string s) {
    
            int len = s.size();
            if (len < 2)
                return s;
            //bool dp[len][len];
            bool** dp;
            dp = new bool* [len];
            for (int i = 0; i < len; i++)
                dp[i] = new bool[len];//分配了len行len列的二维数组空间
        
            int max_len=1;//最大回文串长度
            int max_left;//最长回文串的起始位置
            for (int j = 0; j < len; j++)
            {
                for (int i = 0; i < j; i++)
                {
                    if (s[j] != s[i])
                        dp[i][j] = false;
                    else if (j - i < 3) // (j-1)-(i+1)+1< 2 即表明dp[i][j]是回文串
                        dp[i][j] = true;
                    else
                        dp[i][j] = dp[i + 1][j - 1];//s[i]==s[j]
                    if (j - i + 1 > max_len && dp[i][j])
                    {
                        max_len = j - i + 1;
                        max_left = i;
                    }
    
                }
            }
            return s.substr(max_left, max_len);
            // 用完要释放:
            for (int i = 0; i < len; i++)
            {
                delete[] dp[i]; 
                delete[]dp;
            }   
        }
    };
    int main()
    {
        MySolution sl;
        string s = sl.longestPalindrome("abcdedcabcdefggfedcba");
        cout << s << endl;
    }
    

    参考文献
    [1] 引用自百度文库https://wenku.baidu.com/view/c0f9fb156c175f0e7cd1377d.html
    [2]引用自老师的课件

    展开全文
  • 动态规划程序设计是对解最优化问题的一种途径、一种方法,而不是一种特殊算法。
  • 动态规划算法的基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的局部解,通过...
  • 一、动态规划基本思想 动态规划算法通常用于求解具有某种最优性质的问题 在这类问题中,可能会有许多可行解。 每一个解都对应于一个值,我们希望找到具有最优值的解 基本思想是将待求解问题划分成若干个子问题...
  • 动态规划基本原理

    千次阅读 2020-02-22 13:36:51
    动态规划基本原理 能用动态规划解决的问题的特点 问题具有最优子结构性质:如果问题的最优解所包含的子问题的解也是最优的,我们就称该问题具有最优子结构性质。 无后效性:当前的若干个状态值一旦确定,则...
  • 动态规划(一):动态规划基本概念和基本方程

    万次阅读 多人点赞 2016-11-12 19:33:37
    参考资料:《运筹学》(第三版) 清华大学出版社 ISBN:978-7-302-10214-4 戳我下载动态规划的应用场景等等就不介绍了,后面会写一些能用动态规划方法解决的常见问题。这一部分基本抄书上到1.1 多阶段决策问题及实例...
  • 一、状态压缩动态规划概念 二、例题1
  • 动态规划基本思想

    千次阅读 2019-01-11 16:25:59
    分治法 将一个规模为n的问题分解为K个规模较小的子问题,这些子问题互相独立且与原问题相同。递归的解决这些问题,然后将各个子问题的解合并... 动态规划的实质是分治思想和解决冗余,因此动态规划是一种将问题 ...
  • 动态规划基本步骤

    千次阅读 2018-03-02 20:14:13
    动态规划算法依赖于两个性质:1...动态规划算法对每一个子问题只解一次,而后将其保存在一个表格中,在之后利用这子问题的解(1)找出最优解的性质,并且刻画其结构特征(2)递归地定义最优值(3)以自底向上的方式...
  • 算法设计——动态规划基本要素

    千次阅读 2020-04-13 20:44:29
    两大性质 1.最优子结构 2.子问题重叠性质 最优子结构 定义 问题的最优解包含着其子问题的最优解。这种性质称为最优子结 构性质。 证明 首先假设由问题的最优解导出... 最优子结构是问题能用动态规划算法求解的前提 ...
  • [XJTUSE 算法设计与分析] 第三章 动态规划 3.1 动态规划基本概念与解题步骤
  • 动态规划简介及基本思想

    千次阅读 2019-10-09 08:56:25
    动态规划(Dynamic Programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。
  • 动态规划原理

    千次阅读 2019-05-28 16:04:19
    动态规划通过拆分问题,将问题拆分成许多的子问题,定义问题状态和状态之间的关系(即状态转移方程或递推公式),使得问题能够以递推(或者说分治)的方式去解决。按顺序求解子问题,前一子问题的解,为后一子问题的...
  • 动态规划基本模型

    2019-10-07 07:17:28
    动态规划基本模型 动态规划程序设计是对解最优化问题的一种途径、一种方法,而不是一种特殊算法。不像前面所述的那些搜索或数值计算那样,具有一个标准的数学表达式和明确清晰的解题方法。动态规划程序设计往往是...
  • 第二节动态规划基本概念和定义 1 阶段阶段变量把所给问题的过程适当地分为若干个相互联系的阶 段目的是能按一定的次序去求解描述阶段的变量称为阶段变量常用k表 示阶段的划分一般是分为时间和空间的自然特征来划分...
  • 初识动态规划(dynamic programming)算法基本思想 ​ 目录 一、常见算法: 二、动态规划描述: 三、斐波那契数列 四、给定一个数组,求任意不相邻数字的最大值 五、解决动态规划问题的一般步骤 六、课后小练习 ​ 一...
  • 动态规划法的基本知识

    千次阅读 2020-04-19 16:57:13
    一、动态规划方法相关概念 1、20世纪50年代初美国数学家R.E.Bellman等人在研究多阶段决策过程(multistep decision process)的优化问题时,提出了著名的最优性原理(principle of optimality),同时,把多阶段过程转化...
  • 详解动态规划算法

    千次阅读 多人点赞 2020-04-09 07:59:47
    于是我们得出了求解动态规划基本思路如下(解题四步曲) 判断是否可用递归来解,可以的话进入步骤 2 分析在递归的过程中是否存在大量的重复子问题 采用备忘录的方式来存子问题的解以避免大量的重复计算(剪枝) 改用...
  • 动态规划基础知识 定义 动态规划(Dynamic Programming,DP)是运筹学的一个分支,是求解决策过程最优化的过程。20世纪50年代初,美国数学家贝尔曼(R.Bellman)等人在研究多阶段决策过程的优化问题时,提出了著名...
  • C++动态规划详解

    千次阅读 2021-09-11 18:30:59
    动态规划思想 一、动态规划概念: 动态规划(dp)是研究多步决策过程最优化问题的一种数学方法。...动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后
  • 动态规划适用问题特点

    千次阅读 2020-02-07 10:07:42
    可利用动态规划求解问题的特点: △1、求一个问题的最优解 //重要特点 2、整体问题的最优解依赖于各个子问题的最优解 3、大问题可以分解为若干个小问题,这些小问题之间还有相互重叠的更小的子问题 4、从大往小分析...
  • 1.动态规划基本方法 2.动态规划应用举例 3.马氏决策规划简介 动态规划是用来解决多阶段决策过程最优化的一种数量方法。其特点在于,它可以把一个n 维决策问题变换为几个一维最优化问题,从而一个一个地去解决。 ...
  • 在应用动态规划之前,要分析能否把大问题分解成小问题,分解后的每个小问题也存在最优解。如果把小问题的最优解组合起来能够得到整个问题的最优解,那么就可以考虑应用动态规划解决这个问题。此类问题具有的特点:...
  • 当一个问题具有最优子结构性质时,可用动态规划法求解。有时会有更简单有效的算法。考察找硬币的例子。假设有4种硬币,它们的面值分别为二角五分、一角、五分和一分。现在要找给顾客六角三分钱。这时,自然地拿出2个...
  • 注:步骤1~3是动态规划算法的基本步骤,在只需要求出最优值的情况下,步骤4可 省略,若需要求出问题的最优解(具体的解的过程),则必须执行步骤四 动态规划和分治法的异同: 相同点: 基本思想都是将待求解...
  • 首先,本博客为原创作品,欢迎指导,随意转载,如果可以请转载时说明出处,附上...动态规划算法的基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题...
  • 目录1、多阶段决策过程与动态规划2、动态规划基本概念3、动态规划方法的基本思想4、动态规划与静态规划的关系5、动态规划算法的基本步骤6、哪些问题能用动态规划算法解决7、动态规划算法实例问题1问题2 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 68,661
精华内容 27,464
关键字:

动态规划的基本特征

友情链接: ObjectiveC-basic.docx.zip