1 条题解
-
0
C :
#include<stdio.h> #define max(a,b) (a>b?a:b) int a[110][110]; int main() { int n; scanf("%d",&n); for(int i=1;i<=n;i++) for(int j=1;j<=i;j++) scanf("%d",&a[i][j]); for(int i=n-1;i>=1;i--) for(int j=1;j<=i;j++) a[i][j]=max(a[i+1][j],a[i+1][j+1])+a[i][j]; printf("%d",a[1][1]); return 0; }
C++ :
#include <iostream> using namespace std; int main(){ int n,i,j; int a[101][101] = {0}; cin>>n; //从塔顶往塔底输入 for(i = 0;i < n;i++){ //读入第i行的内容 for(j = 0;j <= i;j++){ cin>>a[i][j]; } } //从塔底的某个数,往塔顶走,倒推,a[i][j] 存放到达第i层的最大值 //它所能走得路线:正上方a[i+1][j],右上方a[i+1][j+1] 2条线 for(i = n - 2;i >= 0;i--){ for(j = 0;j <= i;j++){ if(a[i + 1][j] > a[i + 1][j + 1]){ a[i][j] = a[i][j] + a[i + 1][j]; }else{ a[i][j] = a[i][j] + a[i + 1][j + 1]; } } } cout<<a[0][0]<<endl; }
Python :
n=int(input()) a=[[0 for i in range(n)] for j in range(n)] for i in range(n): sr=input().split() for j in range(i+1): a[i][j]=int(sr[j]) for i in range(n-2,-1,-1): for j in range(i+1): a[i][j]=a[i][j]+max(a[i+1][j],a[i+1][j+1]) print(a[0][0])
- 1
信息
- ID
- 2203
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者