求大佬解答
查看原帖
求大佬解答
1189413
PURE_LOVE楼主2024/1/3 21:12
#include<stdio.h>
#include<string.h>
#include<malloc.h>
int main()
{
	int n = 0;
	scanf("%d",&n);
	int**arr = (int**)calloc(n, sizeof(int*));
	for (int i = 0; i < n; i++)
	{
		arr[i] = (int*)calloc(n, sizeof(int));
		memset(arr[i], 0, sizeof(arr[i]));
	}
	arr[0][n / 2] = 1;
	for (int i = 2; i <=n * n; i++)
	{
		int hang=0; int lie=0;
		for (int h = 0; h<n; h++)
		{
			for (int l = 0; l < n; l++)
			{
				if (arr[h][l] == i - 1)
				{
					hang = h; lie = l;
					break;
				}
			}
		}
		if (hang == 0 && lie != n-1)
		{
			arr[n-1][lie + 1] = i;
		}
		if (hang != 0 && lie == n-1)
		{
			arr[hang-1][0] = i;
		}
		if (hang == 0 && lie == n-1)
		{
			arr[hang + 1][lie] = i;
		}
		if (hang != 0 && lie != n-1)
		{
			if (arr[hang - 1][lie + 1] == 0)
			{
				arr[hang - 1][lie + 1] = i;
			}
			else
			{
				arr[hang + 1][lie] = i;
			}
		}
	}
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < n; j++)
		{
			printf("%d ", arr[i][j]);
		}
		printf("%\n");
	}
}
```c
vs上可以
2024/1/3 21:12
加载中...