数字三角形问题(简单动态规划)-算法设计与分析

const int maxn=100;
int a[maxn][maxn];
int dp[maxn][maxn];
int main()
{
    int n;
    cin>>n;
    memset(a,0,sizeof(a));
    memset(dp,0,sizeof(dp));
    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++) dp[n][i]=a[n][i];
    for(int i=n-1;i>0;i--)
        for(int j=1;j<=i;j++)
            dp[i][j]=max(dp[i+1][j],dp[i+1][j+1])+a[i][j];
    cout<

你可能感兴趣的:([课程]计算机算法设计与分析)