qq_32653757
qq_32653757
2015-11-26 05:03
采纳率: 76.9%
浏览 1.8k
已采纳

新手, C语言寻找三维数组正切面最大和的值,测试对但WA, 有题目和代码, 望大神指点

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;
}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • qq_27183003
    ysuwood 2015-11-27 08:32
    已采纳

    1、把long long 改为int,输入输出格式改为d%
    2、去掉static
    3、max有了初值,for(k=2; k<=c; k++),改为k=2开始
    试试看

    点赞 评论
  • u014095371
    空中听风 2015-11-26 08:18

    你是想问什么?感觉代码没问题啊

    点赞 评论

相关推荐