Description
給出一個長方體,求該長方體每個正切面上的元素之和的最大值。
正切面的意思就是與長方體某一面平行的切面。如果把長方體看作是一個三維數組,那麼每個切面就是一個二維數組。
Input
第一行是3個正整數a、b、c,分別表示長方體的長、寬、高。0 < a, b, c ≤ 60
接下來是 c 塊數據,每一塊數據有a行、每行b個整數。
Output
輸出切面元素和的最大值。
Sample Input
3 3 3
1 2 3
1 2 3
1 2 3
1 2 3
1 2 3
1 2 3
1 2 3
1 2 3
1 2 3
Sample Output
27
代碼:
#include<stdio.h>
int main(void){
static long long z[62][62][62];
long long a, b, c, i, j, k , sum, max;
scanf("%lld%lld%lld", &a, &b, &c);
for(i=1; i<=b; i++)
for(j=1; j<=a; j++)
for(k=1; k<=c; k++)
scanf("%lld", &z[i][j][k]);
sum=0;
for(i=1; i<=b; i++)
for(j=1; j<=a; j++)
sum=sum+z[i][j][1];
max=sum;
for(k=1; k<=c; k++){
sum=0;
for(i=1; i<=b; i++)
for(j=1; j<=a; j++)
sum=sum+z[i][j][k];
if(sum>max) max=sum;
}
for(i=1; i<=a; i++){
sum=0;
for(j=1; j<=b; j++)
for(k=1; k<=c; k++)
sum=sum+z[i][j][k];
if(sum>max) max=sum;
}
for(j=1; j<=b; j++){
sum=0;
for(i=1; i<=a; i++)
for(k=1; k<=c; k++)
sum=sum+z[i][j][k];
if(sum>max) max=sum;
}
printf("%lld", max);
return 0;
}
1、把long long 改為int,輸入輸出格式改為d%
2、去掉static
3、max有了初值,for(k=2; k<=c; k++),改為k=2開始
試試看