原题:http://218.5.5.242:9018/JudgeOnline/problem.php?id=1143
时间:2012.1.22
类型:动归,递推,dp
源码:
#include<iostream>
using namespace std;
int main()
{
int n,a[101][101];
cin>>n;
for(int i=1;i<=n;i++) { for(int j=1;j<=i;j++) { cin>>a[i][j]; } }
for(int i=n-1;i>=1;i--)
{
for(int j=1;j<=i;j++)
{
if(a[i+1][j]>a[i+1][j+1]) { a[i][j]+=a[i+1][j]; }
else a[i][j]+=a[i+1][j+1];
}
}
cout<<a[1][1];
//system("pause");
return 0;
}
最后状态:AC
总结:经典递推题目,在Sky、Dec的帮助下理解了做法,就是从n-1层开始逆推,n-1层的每一个数字选择下面两个中较大的一个,这样推上去。穷举明显TLE。终于进入学习递推之门了