7-2 sdut-C语言实验-数字三角形问题

简介: 7-2 sdut-C语言实验-数字三角形问题

7-2 sdut-C语言实验-数字三角形问题


分数 20


全屏浏览


切换布局


作者 马新娟


单位 山东理工大学


有一个由非负整数组成的三角形,第一行只有一个数,除了最下行之外每个数的左下方和右下方各有一个数,给定一个由n行数字组成的数字三角形如下图所示。试设计一个算法,从第一行的数开始,每一次可以往左下或右下走一格,直到走到最下行,把沿途经过的数全部加起来,如何走才能使得到的这个和尽量大?


###输入格式:

输入数据的第1行是数字三角形的行数n,1≤n≤100。接下来n行是数字三角形各行中的数字。所有数字在0..99之间。

###输出格式:

输出数据只有一个整数,表示计算出的最大值。

###输入样例:

5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5


输出样例:

30


代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

栈限制

8192 KB


#include<stdio.h>     // 动态规划法求: 数字三角形—1730
int main()
{   int n,i,j,D[101][101], a[101][101];
    scanf("%d",&n);
    for (i=1; i<=n; i++)    // 输入三角形
      for(j=1; j<=i; j++)
         scanf("%d",&D[i][j]);
    for (j=1; j<=n; j++)    // a 数组的第 N 行与 D 数组一致
        a[n][j]=D[n][j];
    for (i=n-1; i>=1; i--)     // 从下向上计算 a 数组
       for(j=1; j<=i; j++)
       {    if (a[i+1][j] > a[i+1][j+1])
            {  a[i][j] = a[i+1][j] + D[i][j]; }
            else   {  a[i][j] = a[i+1][j+1] + D[i][j]; }
      }
    printf("%d\n",a[1][1]);
    return 0;
}
目录
相关文章
|
4月前
7-2 sdut-C语言实验-删数问题(贪心法二)
7-2 sdut-C语言实验-删数问题(贪心法二)
34 2
|
4月前
|
BI
7-7 sdut-C语言实验-上升子序列
7-7 sdut-C语言实验-上升子序列
26 0
|
4月前
7-5 sdut-C语言实验-最少拦截系统
7-5 sdut-C语言实验-最少拦截系统
31 6
|
4月前
7-4 sdut-C语言实验-区间覆盖问题
7-4 sdut-C语言实验-区间覆盖问题
31 2
|
4月前
7-10 sdut-C语言实验-走迷宫
7-10 sdut-C语言实验-走迷宫
28 2
|
4月前
|
人工智能 C语言
7-5 sdut -C语言实验-节约用电
7-5 sdut -C语言实验-节约用电
34 3
|
4月前
7-8 sdut-C语言实验-取数字问题
7-8 sdut-C语言实验-取数字问题
27 2
|
4月前
|
机器学习/深度学习 安全
7-3 sdut-C语言实验-小鑫去爬山
7-3 sdut-C语言实验-小鑫去爬山
29 2
|
4月前
7-2 sdut-C语言实验-删数问题
7-2 sdut-C语言实验-删数问题
26 2
|
4月前
|
机器学习/深度学习 安全
7-3 sdut-C语言实验-王老师去爬山
7-3 sdut-C语言实验-王老师去爬山
28 1