算法第三章作业

Posted on 2020-11-01 11:08  thousands  阅读(73)  评论(0编辑  收藏  举报

1. 作业题 单调递增最长子序列题分析。

代码

#include <iostream>
using namespace std;
int a[200];

int Max_xulie(int n){
    int b[200];
    b[0] = 1;
    int max = 1;
    for(int i=1;i<n;i++){
        int k=0;
        for (int j=0;j<i;j++){
            if(a[i]>a[j]){
                k = b[j];
                b[i] = k+1;
            }
            if(max < b[i]){
                max = b[i];
            }
        }
    }
    return max;
}

int main(){
    int n;
    cin >> n;
    for (int i=0;i<n;i++){
        cin >> a[i];
    }
    cout << Max_xulie(n) << endl;
    return 0;
}

  

1.1 根据最优子结构性质,列出递归方程式,

b[i] = b[j]+1 ;  ( 0<j<i , a[i] > a[j]  )

1.2 给出填表法中表的维度、填表范围和填表顺序。

维度    一维数组b[i]

填表范围     0->n

填表顺序     从左往右

1.3 分析该算法的时间和空间复杂度

时间    O(n^2)[i  j   双循环]

空间     O   ( n )   [一维数组]

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

分解问题成若干子问题,从最根源的情况演算出最后所要的最优解,必须找到算法中上层子问题所需要的下层数据,并且需防止子问题的重复计算。

3. 说明结对编程情况

逐渐默契,都能听懂对方的意思了。

Copyright © 2022 thousands
Powered by .NET 6 on Kubernetes