其实这里不用开辟额外的空间,在原数组上操作就可以了
动态规划
代码:
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 510;
int v[N][N];
int n ;
int main() {
cin >> n;
for(int i = 1; i<=n; i++){
for(int j = 1; j <=i; j++) {
scanf("%d",&v[i][j]);
}
}
for(int i = n-1 ; i>0 ; i--)
for(int j = 1; j<=i; j++)
v[i][j] += max(v[i+1][j] , v[i+1][j+1]); // 直接覆盖原数组,由于是从下到上覆盖的,保证了正确性
cout<<v[1][1]<<endl;
return 0;
}