数塔问题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的主要内容,如果未能解决你的问题,请参考以下文章