gpt4 book ai didi

c - 6*6 阵列中可能的最大沙漏总和

转载 作者:行者123 更新时间:2023-12-01 13:33:01 25 4
gpt4 key购买 nike

有一个关于二维数组的问题,它说

给定一个 6*6 矩阵,我们必须打印矩阵中找到的最大(最大)沙漏和。
沙漏被描述为:

a b c
d
e f g

样本输入
1 1 1 0 0 0
0 1 0 0 0 0
1 1 1 0 0 0
0 0 2 4 4 0
0 0 0 2 0 0
0 0 1 2 4 0

样本输出
19

解释

样本矩阵包含以下沙漏:
1 1 1   1 1 0   1 0 0   0 0 0
1 0 0 0
1 1 1 1 1 0 1 0 0 0 0 0

0 1 0 1 0 0 0 0 0 0 0 0
1 1 0 0
0 0 2 0 2 4 2 4 4 4 4 0

1 1 1 1 1 0 1 0 0 0 0 0
0 2 4 4
0 0 0 0 0 2 0 2 0 2 0 0

0 0 2 0 2 4 2 4 4 4 4 0
0 0 2 0
0 0 1 0 1 2 1 2 4 2 4 0

最大和 (19) 的沙漏是
2 4 4
2
1 2 4

我编写了一个程序,其中我制作了一个用于计算沙漏总和的函数。现在我已经创建了一个循环,它为一行可能的每四个沙漏调用这个函数。每四行可以制作一个沙漏。
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
#include <limits.h>
#include <stdbool.h>

int sum(int a[6][6],int i,int j)
{
int n=i+3;
int m=j+3;
int sum=0;
for(i;i<n;i++)
{
for(j;j<m;j++)
{
if(i==n-2)
{
sum += a[i][j+1];
break;
}
else
sum += a[i][j];
}
}
// printf("%d\t",sum);
return sum;
}

int main(){
int arr[6][6];
int i,j,n,k;
int max=0;
for(int arr_i = 0; arr_i < 6; arr_i++){
for(int arr_j = 0; arr_j < 6; arr_j++){

scanf("%d",&arr[arr_i][arr_j]);
}
}
for(int i=0;i<4;i++)
{
k=0;
while(k<4)
{
n=sum(arr,i,k);
// printf("%d\t",n);
k++;
if(n>max)
max=n;

}
}
printf("%d",max);
return 0;
}

谁能告诉我哪里出错了,或者这种方法不适合解决这个问题?

我的程序打印 10作为输出。

最佳答案

错误可能在您的 sum 中功能。你这样做的方式有点矫枉过正,你这样做会更简单(和可读!):

#define GRID_SIZE (6)
int sum(int a[GRID_SIZE][GRID_SIZE], int i, int j)
{ // Define an hourglass by the index i,j of its central element
int sum = a[j-1][i-1] + a[j-1][i] + a[j-1][i+1] +
a[j][i] +
a[j+1][i-1] + a[j+1][i] + a[j+1][i+1];
return sum;
}

然后确保您使用合理的值进行迭代(在 [1, len-2] 中):
for (int i = 1; i < (GRID_SIZE-1); i++)
{
for (int j = 1; j < (GRID_SIZE-1); j++)
{
n = sum(arr, i, j);
if (n > max)
max = n;

}
}

编辑:检查它在这里是否有效: http://www.cpp.sh/46jhy

谢谢,那很有趣:-)。

PS:一定要检查一些编码标准文档,从长远来看它会让你的生活更轻松,只需搜索“C代码格式标准”并习惯尝试与你喜欢的人一起工作。除非你自己做一些新的事情,否则你可能必须遵循一个标准,甚至可能没有发言权,所以熟悉一般规则并习惯于遵循一个你喜欢的规则。

关于c - 6*6 阵列中可能的最大沙漏总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44724783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com