今天acwing里有个题,我还是还以为是完全二叉树,结果我队内dalao一说,原来是线性dp,刚好又是计蒜客的题,那就正好补一下计蒜客的题吧。
捡水果
#include <bits/stdc++.h>
using namespace std;
int a[1004][1003];
int dp[1003][1004];
int n;
int main()
{
cin >> n;
for(int i = 1; i <= n ; i++){
for(int j = 1 ;j <= i ; j++){
cin >> a[i][j];
}
}
for(int i = 1; i <= n ; i++){
for(int j =1; j <= i ; j ++){
dp[i][j] = max( dp[i - 1][j] , dp[i - 1][j - 1] ) + a[i][j];
}
}
int ans = 0;
for(int i = 1; i <= n ; i ++){
if( dp[n][i] > ans ){
ans = dp[n][i];
}
}
for(int i = 1; i <= n ; i++){
for(int j =1; j <= i ; j ++){
cout << dp[i][j] << ' ';
}
cout << endl;
}
cout << ans <<endl;
return 0;
}