HDU 2048 数塔 简单动态规划

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

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

#include
#include
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<

你可能感兴趣的:(HDU 2048 数塔 简单动态规划)