Number Triangles chapter 1.5

 开始想着dfs,果断还是超时,看网上是最简单的dp...压力山大

/*

ID: hubiao cave

PROG: numtri

LANG: C++

*/




#include<iostream>
#include<fstream>
#include<string>

using namespace std;

int tr[1002][1002];
int dp[1002][1002];

int gRow;

int dfs(int row,int column);

int main()

{

    ifstream fin("numtri.in");
    ofstream fout("numtri.out");
    int row;
    fin>>row;
    gRow=row;
    for(int i=1;i<=row;i++)
    {
        for(int j=1;j<=i;j++)
        {
            fin>>tr[i][j];
            if(i==row)
                dp[i][j]=tr[i][j];
        }
    }

    for(int i=row-1;i>=1;i--)
        for(int j=1;j<=i;j++)
        {
            dp[i][j]=max(dp[i+1][j]+tr[i][j],dp[i+1][j+1]+tr[i][j]);
        }
    fout<<dp[1][1]<<endl;
    //fout<<dfs(1,1)<<endl;

    return 0;


}

int dfs(int row,int column)
{
    if(row<gRow)
    {
        int t1,t2;
        t1=dfs(row+1,column)+tr[row][column];
        t2=dfs(row+1,column+1)+tr[row][column];
        return t1>t2?t1:t2;
    }
    return tr[row][column];
}
原文地址:https://www.cnblogs.com/cavehubiao/p/3260939.html