您的位置:首页 > 编程语言 > PHP开发

Tyvj1044数字三角形(动态规划入门)

2011-03-27 17:58 330 查看
  
 
From Admin
数字三角形
 
   
   
 背景 Background 
  09年 USACO 11月月赛  铜牌第一道
   
   
 描述 Description  
  示出了一个数字三角形。 请编一个程序计算从顶至底的某处的一条路
径,使该路径所经过的数字的总和最大。
 每一步可沿左斜线向下或右斜线向下走;
 1<三角形行数<25;
 三角形中的数字为整数<1000;

   
   
 输入格式 Input Format 
  第一行为N,表示有N行
后面N行表示三角形每条路的路径权
   
   
 输出格式 Output Format 
  路径所经过的数字的总和最大的答案
   
   
 样例输入 Sample Input [复制数据] 
 
#include<stdio.h>
int map[26][26];
int maxsum[26][26];
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
for(int i=1;i<=n;i++)
for(int j=1;j<=i;j++)
scanf("%d",&map[i][j]);
for(int j=1;j<=n;j++)
maxsum
[j]=map
[j];
for(int i=n;i>1;i--)
for(int j=1;j<i;j++)
{
if(maxsum[i][j]>maxsum[i][j+1])
maxsum[i-1][j]=maxsum[i][j]+map[i-1][j];
else
maxsum[i-1][j]=maxsum[i][j+1]+map[i-1][j];
}
printf("%d/n",maxsum[1][1]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  output input 测试