总结:回溯,动态规划没看出来在哪
1.对于一些二维数组题目可以直接从i=1,j=1开始a[1][1],用正数;
2.路程叶子节点加在子节点上;
3.从a[n-1][n-1]开始;
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
输出
30
#include<iostream>
using namespace std;
int main(void)
{
int n,a[105][105];//直接定义一个大数组
int i;
int j;
int max;
cin>>n;
for(i=1;i<=n;i++)
for(j=1;j<=i;j++)cin>>a[i][j];//*
for(i=n-1;i>0;i--)
{
for(j=n-1;j>0;j--)
{
if(a[i+1][j]>a[i+1][j+1]) max=a[i+1][j];
//a[i+1][j],a[i+1][j+1]相当于a[i][j]两个子节点
else max=a[i+1][j+1];
a[i][j]+=max;
}
}
cout<<a[1][1];
return 0;
}