首页 > 编程语言 > 详细

算法第三章作业

时间:2018-11-11 22:43:50      阅读:193      评论:0      收藏:0      [点我收藏+]
  1. 你对动态规划算法的理解
  2. 分别列出编程题1、2的递归方程
  3. 说明结对编程情况

    1.你对动态规划算法的理解

应用动态规划的算法一般比较复杂且有规律性,这与分治法类似,不同的是,分解的子问题不是相互独立的,动态规划算法就将子问题的答案记录下来,从而避免同个子问题反复求解的情况;在做题时,通常会思路不够清晰完整,一般是将题目与做过的题对照,若类型差不多就会更加得心应手。

    2.分别列出编程题1、2的递归方程

(1) 求单调递增最长子序列 (时间复杂度为 O(n2))

//没有使用递归

//将数字存于a[]中

    for (int i = 1; i < n; i++){

        for (int j = 0; j < i; j++)

            if (a[j] < a[i]&& b[j]>b[i] - 1)

                b[i] = b[j] + 1;

    }

    int t = b[1];

    for (int  k = 0; k < n; k++)

    {

        if (b[k] > t)

            t = b[k];

    }

    cout<<t;

(2) 租用游艇问题

t=a[i][k]+a[k][j];( k=j-1; k>=i+1 )

①a[i][j]=max{ a[i][j], t } ( j!=i+1 && i>=1 && j<=n )

②a[i][j]=a[i][j] ( j==i+1 )

 技术分享图片

 

       3.说明结对编程情况

起初在做租用游艇问题时,我们刚开始各自思考,后来思路是一样的,等到编程时,我会漏掉一些东西,经过同伴提醒就作对了。

      

算法第三章作业

原文:https://www.cnblogs.com/sxty/p/9943396.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!