/**
* 给你一个数n,然后使其成为一个n层的金字塔,其中金字塔上面一个数字比它下面两个数字小。
* 你的任务就是从最上面开始往下走,只能向下走相邻的两个数字,从第一层走到最下面一层,求出其最大值
* (金字塔的数据结构你要自己建,老师过来给你数据,你再在控制台上输)。 金子塔样子:
3
4 5
4 6 6
7 12 13 8
* @author 1344657116@qq.com
* @date 2021/3/1 21:19
* 我的思想就是构建一个类似与树的一个数组---[i+1][j]与[i+1][j+1]来满足题目要求
* 3
4 5
4 6 6
7 12 13 8
*/
#include<stdio.h>
int again(int i,int j,int max,int a[][10],int hight){
if(a[i+1][j]>a[i+1][j+1]&&i+1<hight){
max=a[i+1][j];
return again(i+1,j,max,a,hight);
}
else if(a[i+1][j]<a[i+1][j+1]&&i+1<hight){
max=a[i+1][j+1];
return again(i+1,j+1,max,a,hight);
}
else if (a[i+1][j]==a[i+1][j+1]&&i+1<hight)
// 3目运算符 ? :
return again(i+1,j,max,a,hight)>again(i+1,j+1,max,a,hight)?again(i+1,j,max,a,hight):again(i+1,j+1,max,a,hight);
else
return max;
}
int main(){
int a[10][10];
int hight,max;
printf("请输入高度");
scanf("%d",&hight);
for(int i=0;i<hight;i++)
for(int j=0;j<=i;j++){
scanf("%d",&a[i][j]);
}
max=again(0,0,0,a,hight);
printf("%d",max);
return 0;
}
C语言版上机程序设计
最新推荐文章于 2021-05-21 07:45:12 发布