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. 说明结对编程情况
逐渐默契,都能听懂对方的意思了。
浙公网安备 33010602011771号