您的位置:首页 > 其它

tyvj1044数字三角形

2015-10-31 23:01 330 查看
背景

09年 USACO 11月月赛 铜牌第一道

描述

示出了一个数字三角形。 请编一个程序计算从顶至底的某处的一条路径,使该路径所经过的数字的总和最大。

  每一步可沿左斜线向下或右斜线向下走;

  1<三角形行数<25;

  三角形中的数字为整数<1000;

输入格式

第一行为N,表示有N行

后面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 max(int x,int y)
{
if (x>y)
return x;
else
return y;
}

int main()
{
int n,f[25][25],i,j,a[25][25];
cin>>n;
for (i=1;i<=n;i++)
for (j=1;j<=i;j++)
cin>>a[i][j];
for (i=1;i<=n;i++)
f
[i]=a
[i];
for (i=n-1;i>=1;i--)
for (j=1;j<=i;j++)
f[i][j]=max(f[i+1][j],f[i+1][j+1])+a[i][j];
cout<<f[1][1];
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: