gpt4 book ai didi

c - 在C中填充二维数组的算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:39:21 26 4
gpt4 key购买 nike

很抱歉这个菜鸟问题。

所以我被要求创建一个算法来填充二维数组。他们没有说规则是什么,但是,有人告诉我结果矩阵应该是这样的:

1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1

我没有被告知矩阵是否一定是正方形的,但大小可能会有所不同。所以基本上我看到的是矩阵是垂直、水平和对角线对称的。现在无论我尝试什么,它最终都变得 super 复杂,而当我看着它时,我觉得它应该非常简单......

关于您如何操作的任何技巧或片段?提前致谢。

最佳答案

您需要 2 个嵌套循环来遍历行和列。字段内容为控制变量的最小值和控制变量与数组维度大小之差的最小值,加1。

N = 5

0: min(0, N-0-1) + 1 = 1
1: min(1, N-1-1) + 1 = 2
2: min(2, N-2-1) + 1 = 3
3: min(3, N-3-1) + 1 = 2
4: min(4, N-4-1) + 1 = 1

#include <stdio.h>

#define N 5

#define MIN(a,b) (((a)<(b))?(a):(b))

int main()
{
int a[N][N];
for ( int i = 0; i < N; ++ i )
{
for ( int j = 0; j < N; ++ j)
{
int minI = MIN(i, N-i-1);
int minJ = MIN(j, N-j-1);
a[i][j] = MIN(minI, minJ) + 1;
printf("%d ", a[i][j]);
}
printf("\n");
}
return 0;
}

输出:

1 1 1 1 1 
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1

参见 live example

关于c - 在C中填充二维数组的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47044034/

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