动态规划专项训练1
A
#include<cstdio>
#include<algorithm>
#include<cstring>
#define maxn 110
int arr[maxn][maxn];
//注意:不能将此arr放在main函数中,写成int arr[n][n];
using namespace std;
int main()
{
int n;
while(~scanf("%d",&n))
{
//*****int arr[n][n];这样写在oj是提交会报错
memset(arr,0,sizeof(arr));
for(int i=0;i<n;i++)
{
for(int j=0;j<i+1;j++)
{
scanf("%d",&arr[i][j]);
}
}
for(int i=n-2;i>=0;i--)
//注意i=n-2表示倒数第二行开始,因为max里面是计算的n-1行的数据的最大值
{
for(int j=0;j<=i;j++)
{
arr[i][j] = arr[i][j] + max(arr[i+1][j],arr[i+1][j+1]);
}
}
printf("%d\n",arr[0][0]);
}
return 0;
}