解题思路:数塔问题。从倒数第二行开始求当前行对应位置与下一行对应位置的两个数最大值之和,一直到第一行,则第一个就是所求数据。
参考代码:
#include <stdio.h> #include <math.h> int max(int x,int y) { if(x>y) return x; else return y; } int main() { int a[100][100]={0}; int i,j,n,count,k; scanf("%d",&count);//测试次数 for(k=1;k<=count;k++) { scanf("%d",&n); //行数 for(i=0;i<n;i++) for(j=0;j<=i;j++) scanf("%d",&a[i][j]); for(i=n-2;i>=0;i--) for(j=0;j<=i;j++) a[i][j]+=max(a[i+1][j],a[i+1][j+1]); printf("%d\n",a[0][0]); } return 0; }
0.0分
2 人评分
字符逆序 (C语言代码)浏览:862 |
【出圈】 (C++代码)(典型的约瑟夫环——链表解决)浏览:1284 |
点我有惊喜!你懂得!浏览:2028 |
十->二进制转换 (C++代码)(零和负数需要特殊处理)浏览:1135 |
C语言程序设计教程(第三版)课后习题9.2 (C语言代码)浏览:741 |
时间转换 (Java代码)浏览:618 |
C语言训练-数字母 (C语言代码)浏览:610 |
C语言训练-求素数问题 (C语言代码)浏览:773 |
C语言程序设计教程(第三版)课后习题9.4 (Java代码)浏览:1447 |
拆分位数 (C语言代码)浏览:1361 |