题目:数塔问题,dp[i][j]到第i行第j个数的最大值;
代码:
#include<iostream> #include<cstdio> #include<cstring> #define mem(a,b) memset(a,b,sizeof a) using namespace std; int dp[1010][1010]; int a[1010][1010]; int main() { int n; while(cin>>n) { int maxx=-1; for(int i=1;i<=n;i++){ for(int j=1;j<=i;j++) cin>>a[i][j]; } dp[1][1]=a[1][1]; for(int i=2;i<=n;i++){ for(int j=1;j<=i;j++) { dp[i][j]=max(dp[i-1][j-1],dp[i-1][j])+a[i][j]; maxx=max(dp[i][j],maxx); } } cout<<maxx<<endl; } return 0; }
时间: 2024-12-15 15:02:01