C语言,魔方阵!! 求大神指教,就是每一行每一列和对角线之和都相等的一个二位数组; 8 1 6 3 5 7 4 9 2
1个回答
展开全部
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int main()
{
int n;
int t;
int i;
cin >> t;
while (t--)
{
cin >> n;
int num[n + 2][n + 2];
memset(num, 0, sizeof(num));
num[1][n / 2 + 1] = 1;
int j = 1, k = n / 2 + 1;
for (i = 2; i <= n * n; ++i)
{
j--;
k++;
if (j == 0 && k != n + 1)
{
j = n;
}
else if (num[j][k] != 0 || (j == 0 && k == n + 1))
{
j += 2;
k--;
}
else if (k == n + 1 && j != 0)
{
k = 1;
}
num[j][k] = i;
}
for (i = 1; i <= n; ++i)
{
for (j = 1; j <= n; ++j)
printf("%4d", num[i][j]);
printf("\n");
}
}
return 0;
}
追问
大神,我比较LOW,看不懂
追答
这个代码实际上是模拟填九宫格的过程,我马上给你一张gif动图 你就看懂了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询