poj_1163,典型的动态规划问题。但是这道题的妙不在此。如果能想到逆向思维,从底往上计算,那这题应该说很精妙。可惜思路是他人提供的。。。。
参考链接:http://kb.cnblogs.com/a/2282974/
我的代码:
#include <iostream>
using namespace std;
int max(int a,int b)
{
return a>b?a:b;
}
int main()
{
int a[101][101];
int rows;
cin>>rows;
int i,j;
for(i = 1;i <= rows; i++)
for(j = 1;j <= i;j++)
cin>>a[i][j];
for(i = rows - 1;i >= 1;i--)
for(j = 1;j <= i;j++)
a[i][j] = max(a[i][j]+a[i+1][j],a[i][j]+a[i+1][j+1]);
cout<<a[1][1]<<endl;
return 0;
}