zoukankan      html  css  js  c++  java
  • 算法之美--2.3.3九宫格问题

    2016-12-13   00:28:19
    在《射雕英雄传》中黄蓉曾破解九宫格,口诀:戴九履一,左三右七,二四有肩,八六为足,五居中央。
    还有口诀:“一居上行正中央,依次斜填切莫忘;上出框时向下放,右出框时向左放;排重便在下格填,右上排重一个样。” 这口诀不仅适用于九宫,也适用于推广的奇数九宫,如五五图,七七图等等.
     
    「重排九宫」有两种玩法:
    第一种是在在3×3方格盘上,是把1至8八个小木块随意摆放,每一空格其周围的数字可移至空格。玩者要将小木块按12345678的顺序重新排好,以最少的移动次数拼出结果者为胜。
    第二种玩法如九宫格算术游戏玩法,推动木格中8个数字排列,横竖都有3个格,使每行、每列两个对角线上的三数之和都等于15。在计算的同时,还必须思考怎么把数字方块推动到相对应的位置上,这个游戏不仅仅考验人的数字推理能力,也同时考验了人的思维逻辑能力。

      针对奇数阶数的幻方填写方法:

    注意:二维数组指针的创建和释放。

    v
    /*!
     * file 九宫格问题.cpp
     *
     * author ranjiewen
     * date 十二月 2016
     *
     * 
     */
    
    #include<iostream>
    #include<iomanip>
    
    using namespace std;
    
    int main(int agrc, char **argv[])
    {
        cout << "请输入幻方的小大n(大于1的奇数):" << endl;
        int n = 1;
        cin >> n;
        cout << endl;
        int **a = new int*[n];
        for (int i = 0; i < n;i++)
        {
            a[i] = new int[n];
            memset(a[i],0,n*sizeof(int));
        }
        int row = 0;
        int col = n / 2;
    
        for (int i = 1; i <= n*n;i++)
        {
            a[row][col] = i;
            row--;
            col++;
            if (row<0&&col>=n)
            {
                col--;
                row += 2;
            }
            else if (row < 0)
            {
                row = n - 1;
            }
            else if (col>=n)
            {
                col = 0;
            }
            else if (a[row][col]!=0)
            {
                col--;
                row += 2;
            }
        }
    
        for (int i = 0; i < n;i++)
        {
            for (int j = 0; j < n;j++)
            {
                cout << setw(6) << a[i][j];
            }
            cout << endl;
        }
        for (int i = n-1; i >0 ; i--)
        {
            delete[] a[i];
        }
        delete[] a;
    
        return 0;
    }
  • 相关阅读:
    netcore使用IdentityServer在nginx下502错误的解决
    更新到.netcore3.0后找不到dotnet-ef的解决办法
    openssh-win64 on windows2016 ssh pub key config
    405 Method Not Allowed error with PUT or DELETE Request on IIS Server
    minikube windows hyperx填坑记
    angular当router使用userhash:false时路由404问题
    内网gitlab11.2升级至11.4.5
    Angular7上手体验
    动态规划之背包问题
    Union-Find算法详解
  • 原文地址:https://www.cnblogs.com/ranjiewen/p/6168218.html
Copyright © 2011-2022 走看看