数字三角形 | ||
| ||
description | ||
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和。
注意:路径上的每一步只能从一个数走到下一层上和它最近的左边的那个数或者右边的那个数。
| ||
input | ||
| ||
output | ||
| ||
sample_input | ||
| ||
sample_output | ||
|
AC代码:
#include <stdio.h>
#include <string.h>
//author:YangSir
int max(int a,int b)
{
return a>b?a:b;
}
int main()
{
int n,m,i,j,dp[200][200];
while(~scanf("%d",&n))
{
memset(dp,0,sizeof(dp));
for(i=0;i<n;i++)
{
for(j=0;j<=i;j++)
{
scanf("%d",&dp[i][j]);
}
}
for(i=n-2;i>=0;i--)
{
for(j=0;j<=i;j++)
{
dp[i][j]=max(dp[i][j]+dp[i+1][j],dp[i][j]+dp[i+1][j+1]);
}
}
printf("%d\n",dp[0][0]);
}
return 0;
}