码迷,mamicode.com
首页 > 其他好文 > 详细

简单动态规划---动态的数字三角形

时间:2016-04-25 21:07:52      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:

动态的数字三角形
难度级别:B; 运行时间限制:1000ms; 运行空间限制:51200KB; 代码长度限制:2000000B
试题描述

    一个数字组成的三角形,有n行,第i行有i个数。从第一个数开始,每次可以往左下或右下走一格,直到走到最后一行,把沿途经过的数全部加起来。如何走才能得到最大的和?
    举个例子:
                       技术分享
    为了简单起见,输入时将每行的数依次输入,第一个数之前并不输入空格。

输入
第一行:n,表示这个三角形共有n行
第二至n+1行:依次为这个数字三角形各行的数据(按顺序输入),两数之间有一个空格分隔。 
输出
一个数,表示最大的和
输入示例
4
1
3 2
4 10 1
4 3 2 20
输出示例
24
技术分享
 1 #include<iostream>
 2 #include<algorithm>
 3 using namespace std;
 4 #define MAXN 1000
 5 int n,i,j,a[MAXN][MAXN];
 6 int main()
 7 {
 8     scanf("%d",&n);
 9     for(i=1;i<=n;i++)
10         for(j=1;j<=i;j++)scanf("%d",&a[i][j]);
11     for(i=n-1;i>=1;i--)
12         for(j=1;j<=i;j++)a[i][j]=max(a[i][j]+a[i+1][j],a[i][j]+a[i+1][j+1]);
13     printf("%d\n",a[1][1]);
14     return 0;
15 }
View Code

 

简单动态规划---动态的数字三角形

标签:

原文地址:http://www.cnblogs.com/wxjor/p/5432649.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!