回复 9楼 花脸
明白了~那个输出图原型是一个金字塔~不过打印数据时移位了~那题答案是30~
[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
#include<stdio.h> void creat(int a[][25],int n); void print(int a[][25],int n); int get_max(int b[],int n); int fun(int a[][25],int n); int main() { int a[25][25]={0}; int n=0; scanf("%d",&n); creat(a,n); print(a,n); printf("\n%d\n",fun(a,n)); return 0; } void creat(int a[][25],int n) { int i=0; int j=0; for (i=0;i<n;++i) for (j=0;j<=i;++j) scanf("%d",&a[i][j]); } void print(int a[][25],int n) { int i=0; int j=0; puts(""); for (i=0;i<n;++i) { for (j=0;j<=i;++j) printf("%-3d",a[i][j]); puts(""); } } int fun(int a[][25],int n) { int sum=0; int b[25]={0}; int c[25]={0}; int i=0; int j=0; int k=0; for (i=0;i<n;++i) { for (j=0;j<=i;++j) if (j==0) c[j]=b[j]+a[i][j]; else if (j==i) c[j]=b[j-1]+a[i][j]; else c[j]=(b[j-1]>b[j]?b[j-1]:b[j])+a[i][j]; for (k=0;k<=i;++k) b[k]=c[k]; } sum=get_max(b,n); return sum; } int get_max(int b[],int n) { int i=0; int max=b[0]; for (i=1;i<n;++i) if (b[i]>max) max=b[i]; return max; }
#include <stdio.h> #define N 5 int max(int a, int b) { return a > b ? a : b; } int main() { int n, s[N][N], val[N + 1] = {0}; scanf("%d", &n); for (int i = 0; i < n; ++i) for (int j = 0; j <= i; ++j) scanf("%d", &s[i][j]); for (int i = n - 1; i >= 0; --i) { for (int j = 0; j <= i; ++j) { val[j] = s[i][j] + max(val[j], val[j + 1]); } } printf("%d\n", val[0]); return 0; }
[此贴子已经被作者于2017-3-13 10:14编辑过]