HDU 2048 数塔 简单动态规划

这是一题简单的动态规划。

我是从下往上推的,也可以从上往下推。
方程
dp[i][j] = a[i][j] +max{ d[i+1][j],d[i+1][j+1] }

#include<iostream>
#include<algorithm>
using namespace std;


int main(){
    FILE *fin = freopen("1.txt","r",stdin);
    int kase,n;
    string line;
    cin>>kase;
    while(kase--){
        int a[101][101];
        int dp[101][101];
        cin>>n;
        for(int i =1;i<=n;i++){
            for(int j =1;j<=i;j++)
                cin>>a[i][j];
        }
    for(int j = 1;j<=n;j++) dp[n][j] = a[n][j];
    for(int i = n-1;i>=1;i--){
        for( int j =1;j<=i;j++){
            dp[i][j] =a[i][j]+ max(dp[i+1][j],dp[i+1][j+1]);
        }
    }
    cout<<dp[1][1]<<endl;
    }//while
    
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容