1 #include <iostream> 2 using namespace std; 3 4 int main() { 5 int n; 6 cin >> n; 7 int a[n][n]; 8 int m[n][n]; 9 for(int i = 0; i < n; i++) { 10 for(int j = 0; j <= i; j++) { 11 cin >> a[i][j]; 12 } 13 } 14 for(int j = 0; j < n; j++) { 15 m[n-1][j] = a[n-1][j]; 16 } 17 for(int i = n - 2; i >= 0; i--){ 18 for(int j = 0; j <= i; j++) { 19 if(m[i+1][j]>m[i+1][j+1]){ 20 m[i][j] = m[i+1][j] + a[i][j]; 21 } else { 22 m[i][j] = m[i+1][j+1] + a[i][j]; 23 } 24 } 25 } 26 cout << m[0][0]; 27 28 }
时间复杂度:应为存在两个for循环语句,所以为O(n*n)
空间复杂度:申请两个数组,为O(n)
对填表的运用不纯熟,理解不够透彻,总是会出现不知道下一步该干什么的情况,和队友沟通上表述不清晰。要加强理解,加深记忆,多与队友沟通。
原文:https://www.cnblogs.com/cmh2969/p/11715563.html