数塔问题1059

Posted zq-dmhy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数塔问题1059相关的知识,希望对你有一定的参考价值。

求最小的路径

题目描述:

从数塔顶层出发,每个结点可以选择向左走或向右走,要求一直走到塔底,使得走过的路径上的数值和最小。

例如对于下面这样的数塔

    1
  2   3
4   5   6

按照 1 - 2 - 4 的路线走,可取得路径上的数值和的最小值为 7

输入描述:

每组输入的第一个行表示行数,最大不超过 1000 行。

后面每行为这个数塔特定行包含的正整数。这些正整数不大于 10000。

输出描述:

对于每组测试数据,输出一行答案。

样例输入:

3
1
2 3
4 5 6

样例输出:

7

 

从下往上遍历,求出每行的值往上加,直到最上面一行判断大小,就得解

 

技术图片
 1 #include<iostream>
 2 using namespace std;
 3 int row[1000][1000];
 4 int main()
 5     int n;
 6     while(cin>>n)
 7         int i,j,sum=0;
 8         for(i=0;i<n;i++)
 9             for(j=0;j<=i;j++)
10                 cin>>row[i][j];
11             
12         
13         for(i=n-2;i>=0;i--)
14             for(j=0;j<=i;j++)
15                 sum=row[i+1][j];
16                 if(sum>row[i+1][j+1])
17                     sum=row[i+1][j+1];
18                 
19                 row[i][j]=row[i][j]+sum;
20             
21         
22         cout<<row[0][0]<<endl;
23     
24     return 0;
25  
重要

 

以上是关于数塔问题1059的主要内容,如果未能解决你的问题,请参考以下文章

HDU2084_数塔简单题数塔

数塔问题

寒假训练——热身---递推——数塔

数塔问题

7I - 数塔

动态规划----数塔问题