算法第三章

1.你对动态规划算法的理解(2分)

答:动态规划算法其实和分治法很像,本质都是把一个大的问题分解成若干个小问题,通过求解子问题得到原问题的解,而子问题一般是存在联系的,用分治法会消耗大量时间,子问题被重复计算多次,如果我们把已解决子问题的答案保存,需要时拿出来用,这样可避免大量计算,我们用一个表来记录这些结果,这是动态规划的思想。

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

第一题:

for(int i = 1; i < n; i++){
        for(int j = 0; j < i; j++){
            if(a[j] < a[i] && b[j] + 1 > b[i]){
                b[i] = b[j] + 1;
            }
        }
    }

第二题:

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

3.说明结对编程情况(1分

答:自己对动态规划并不是特别了解,自己编程所花时间很长,结对编程提高了我的效率。

posted @ 2018-11-04 23:03  kop11  阅读(117)  评论(0编辑  收藏  举报