第三章作业

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

将待解问题分解成若干个有关联的子问题,先求解出最小的子问题,在求解出临近的规模比它大的问题,直至到待解问题。该算法可以保存已解决的子问题的答案,在需要时再找出已解决的子问题的答案,避免大量重复计算,减少时间复杂度。我认为运用这个算法的关键点在于找出找出问题的递归过程并列出递归方程。

2.

7-1:递归方程:m[i]=m[k]+1 (a[i]>a[k]&&m[i]<m[k]+1)

调用函数:

int LongArray(int a[],int n)
{
    int m[1000];
    for(int i=1;i<=n;i++)
       m[i]=1;
    if(n==1)
       return m[n];
    for(int i=2;i<=n;i++){
        for(int k=i-1;k>=1;k--){
            if(a[i]>a[k]&&m[i]<m[k]+1)
            {
                m[i]=m[k]+1;
                t=max(t,m[i]);
            }
        }
    }
    return t;
}

7-2:递归方程:a[i][n]=a[i][k]+a[k][n](a[i][n]>(a[i][k]+a[k][n]))

调用函数:

int Number(int a[][200],int n)
{
    for(int i=n-1;i>=1;i--){
        for(int k=i+1;k<n;k++){
            if(a[i][n]>(a[i][k]+a[k][n]))
               a[i][n]=a[i][k]+a[k][n];
        }   
    }
    return a[1][n];
}

3.结对编程情况:

在平时的交流较少,在实验课上的交流较多。其实算是单方面的指导,因为我的算法基础和编程能力较弱,所以一般是我请教对方并接受对方的做法,自己思考得比较少。所以接下来我要多思考多打代码,提高自己的能力,做到能够互相地交流想法。

posted @ 2018-11-14 19:13  L莹T  阅读(112)  评论(0)    收藏  举报