C语言,魔方阵!! 求大神指教,就是每一行每一列和对角线之和都相等的一个二位数组; 8 1 6 3 5 7 4 9 2

 我来答
繁花败叶zlp
2016-08-11 · TA获得超过182个赞
知道小有建树答主
回答量:179
采纳率:85%
帮助的人:56.2万
展开全部
#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动图 你就看懂了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式