1 条题解
-
0
C++ :
#include <bits/stdc++.h> using namespace std; //记录数塔及数塔的计算结果 int a[110][110]; int r[10000][2];//记录路径 int main(){ int i,j,k,n; cin>>n; //读入数塔 for(i = 1;i <= n;i++){ for(j = 1;j <= i;j++){ cin>>a[i][j]; } } //从倒数第二层开始计算 for(i = n - 1;i >= 1;i--){ for(j = 1;j <= i;j++){ //下方和右侧看哪个数更大 a[i][j] += max(a[i+1][j],a[i+1][j+1]); } } //根据计算结果存路线 r[1][1] = 1; r[1][2] = 1; k = 2; int x = 1,y = 1;//记录路径 //一直算到第n行 while(x != n){ if(a[x+1][y] > a[x+1][y+1]){ r[k][1] = x + 1; r[k][2] = y; x++; }else{ r[k][1] = x + 1; r[k][2] = y + 1; x++;y++; } k++;//下标自增 } //输出结果 for(i = k-1;i >= 1;i--){ if(i != 1){ cout<<r[i][1]<<","<<r[i][2]<<"->"; }else{ cout<<r[i][1]<<","<<r[i][2]<<endl; } } cout<<a[1][1]<<endl; return 0; }
- 1
信息
- ID
- 2330
- 时间
- 1000ms
- 内存
- 64MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者