算法第三章作业

1、每个问题都有其解决的原则或规律,找出来编写成公式,把问题套公式解决,这就是我理解的动态规划算法的理解。

2、

单调递增最长子序列:

int m[n] = {1};
    int max=0;
    for(int i=1;i<n;i++){
        for(int j=0;j<i;j++){
            if(a[i] > a[j] && m[i] < m[j]+1) {
                m[i] = m[j] +1;
            }
        }
    }
    for(int i=0;i<n;i++){
        if(max < m[i])
            max = m[i];
    }
 
 
组游艇问题:
for(int k=2;k<n;k++)
    {
        for(int i=1;i<=n-k;i++)
        {
            int z=i+k;
    
            for(int j=i+1;j<z;j++)
            {
                int min=a[i][j]+a[j][z];
    
                if(a[i][z]>min)
    
                 a[i][z]=min;
            }
        }
    }
 
 
3、结对编程的情况
这次作业是和搭档一起完成的,感觉我的逻辑方面和解决问题的能力还不行,因为我们在讨论后还需要上网去查资料,并努力去理解每个代码的意思,最重要的是我想不出怎么优化这个算法,我知道这不是最好的,甚至有些地方可以省略合并,但是并没有找到。以后要加强能力,不能给搭档拖后腿。
posted on 2019-11-02 23:11  JWZXXN  阅读(96)  评论(0编辑  收藏  举报