第三章作业

一、对动态规划的理解

1.基本概念

动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。

2.分治法的问题

    子问题是相互独立的,如果子问题不是相互独立,分治法将重复计算公共子问题,效率很低。(自顶向下地计算)

3.动态规划特点

    把原始问题划分成一系列子问题。

    求解每个子问题仅一次,并将其结果保存在一个表中,以后用到时直接存取,不重复计算,节省计算时间。

    自低向上地计算。

4.使用动态规划条件

    优化子结构(保证正确性):如果问题的最优解所包含的子问题的解也是最优的,就称该问题具有最优子结构,

    重叠子问题(保证有效性):即子问题之间是不独立的,一个子问题在下一阶段决策中可能被多次使用到。

二 、编程题递归方程

7.1

for(i=2;i<=n;i++)
        {
            max=0;
            for(j=1;j<=i-1;j++)
            {
                if(m[j]>max&&num[i]>num[j])
                {
                    max=m[j];
                    m[i]=max+1;
                }
            }
    }

7.2

    for(int k=2;k<n;k++)
    {
        for(int i=1;i<=n-k;i++)
        {
            int j=i+k;
            for(int z=i+1;z<=j;z++)
            {
                int temp=dp[i][z]+dp[z][j];
                if(dp[i][j]>temp)
                    dp[i][j]=temp;
            }
        }
    }

三 、结对编程情况

  这次作业没有和队友很好地交流,大部分都得是自己看书完成的。下次作业一定要约上队友一起去学习,互相促进,共同进步。

原文地址:https://www.cnblogs.com/icyk/p/9901888.html