首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

wikioi 1220 数目字三角形

2013-10-17 
wikioi 1220 数字三角形题目描述 Description如图所示的数字三角形,从顶部出发,在每一结点可以选择向左走

wikioi 1220 数字三角形

题目描述 Description

如图所示的数字三角形,从顶部出发,在每一结点可以选择向左走或得向右走,一直走到底层,要求找出一条路径,使路径上的值最大。

wikioi 1220 数目字三角形

输入描述 Input Description

第一行是数塔层数N(1<=N<=100)。

第二行起,按数塔图形,有一个或多个的整数,表示该层节点的值,共有N行。

输出描述 Output Description

输出最大值。

样例输入 Sample Input

5

13

11 8

12 7 26

6 14 15 8

12 7 13 24 11

样例输出 Sample Output

86

分析:

状态转移方程:dp[i][j]=max(dp[i-1][j-1],dp[i-1][j])+a[i][j];

#include <iostream>#include <algorithm>using namespace std;#define MAXN 111int dp[MAXN][MAXN];int a[MAXN][MAXN];int main(){    int n;    int ans=0x80000000;    cin >> n;    for(int i=1; i<=n; i++)        for(int j=1; j<=i; j++)            cin >> a[i][j];    for(int i=1; i<=n; i++)        for(int j=1; j<=i; j++)            dp[i][j]=max(dp[i-1][j-1],dp[i-1][j])+a[i][j];    for(int j=1; j<=n; j++)        if(dp[n][j]>ans) ans = dp[n][j];    cout << ans;    return 0;}

注意:dp数组下标从0开始,因而边界问题不需单独考虑。

热点排行