标签:ios namespace cin ret 路径 超过 包含 表示 alt
求最小的路径
从数塔顶层出发,每个结点可以选择向左走或向右走,要求一直走到塔底,使得走过的路径上的数值和最小。
例如对于下面这样的数塔
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 }
标签:ios namespace cin ret 路径 超过 包含 表示 alt
原文地址:https://www.cnblogs.com/zq-dmhy/p/10994151.html