算法第三章上机实践报告

1、实践题目:7-1 数字三角形

2、问题描述:

 

 3、算法描述

#include <iostream>
using namespace std;
int b[10005][10005];
int numberTriangle(int a[1005][1005], int n){
 
 for(int i = n - 1; i >= 0; i--){
  for(int j = i; j >= 0; j--){
   b[i][j] = ((b[i + 1][j] > b[i + 1][j + 1]) ? b[i + 1][j] : b[i + 1][j + 1]) + a[i][j];
  }
 }
 return b[0][0];
}
int main(){
 int n, i ,j;
 int a[1005][1005];
 cin >> n;
 for(i = 0; i < n; i++){
  for(j = 0; j <= i; j++){
   cin >> a[i][j];
  }
 }
 cout << numberTriangle(a, n) << endl;

 return 0;
} 
View Code

4、算法时间及空间复杂度分析(要有分析过程)

时间复杂度:由于每个数组单元的计算耗费O(1)时间,因此算法numbertriangle耗时O(n2),而main函数中时间复杂度为O(n2),所以总的时间复杂度为O(2n2);

空间复杂度:由于算法内有一个嵌套循环,因此算法numbertriangle空间复杂度O(n2),而main函数中亦如此,空间复杂度为O(n2),所以总的空间复杂度为O(2n2);

5、心得体会(对本次实践收获及疑惑进行总结)

结对编程是真的好,有些思路卡住了,小伙伴就能为你排忧解难,在编程中,填表的过程中我一直想不明白要求的是哪个三角形,我的同伴画了个图一下子就清晰明了了,我也发现动态规划最重要的是推出动态规划的公式,希望下次能做出更难的题!

posted @ 2019-10-17 22:09  杨玉翔  阅读(130)  评论(0编辑  收藏  举报