算法之美--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;
}
时间: 2025-01-20 06:54:16

算法之美--2.3.3九宫格问题的相关文章

算法之美_源码公布(1)

本文辑录了<算法之美--隐匿在数据结构背后的语言>(电子工业出版社2016年出版)一书第1~2章之代码(P1~P61).全文文件夹."45个算法"文件夹."22个经典问题文件夹",以及有奖捉虫活动详情请见例如以下链接:http://blog.csdn.net/baimafujinji/article/details/50484348 附录中的经典笔试.面试问题參考答案请见: http://blog.csdn.net/baimafujinji/articl

算法之美_源代码发布(1)

本文辑录了<算法之美--隐匿在数据结构背后的语言>(电子工业出版社2016年出版)一书第1~2章之代码(P1~P61).全文目录."45个算法"目录."22个经典问题目录",以及有奖捉虫活动详情请见如下链接:http://blog.csdn.net/baimafujinji/article/details/50484348 附录中的经典笔试.面试问题参考答案请见: http://blog.csdn.net/baimafujinji/article/det

算法之美隆重上市欢迎关注(更有三重好礼)

探秘算法世界,求索数据结构之道: 汇集经典问题,畅享编程技法之趣: 点拨求职热点,敲开业界名企之门. 内容简介:本书围绕算法与数据结构这个话题,循序渐进.深入浅出地介绍了现代计算机技术中常用的四十余个经典算法,以及回溯法.分治法.贪婪法和动态规划等算法设计思想.在此过程中,本书也系统地讲解了链表(包括单向链表.单向循环链表和双向循环链表).栈.队列(包括普通队列和优先级队列).树(包括二叉树.哈夫曼树.堆.红黑树.AVL树和字典树).图.集合(包括不相交集)与字典等常用数据结构.同时,通过对二十

算法之美_源代码发布(5)

本文辑录了<算法之美--隐匿在数据结构背后的语言>(电子工业出版社2016年出版)一书第5~6章之代码(P149~P183).全文目录."45个算法"目录."22个经典问题目录",以及有奖捉虫活动详情请见如下链接:http://blog.csdn.net/baimafujinji/article/details/50484348 附录中的经典笔试.面试问题参考答案请见: http://blog.csdn.net/baimafujinji/article/

算法之美_源代码发布(11)——完结篇

本文辑录了<算法之美--隐匿在数据结构背后的语言(C++版)>(电子工业出版社2016年出版)一书第11章之代码(P375~P406).全文目录."45个算法"目录."22个经典问题目录",以及有奖捉虫活动详情请见如下链接:http://blog.csdn.net/baimafujinji/article/details/50484348 附录中的经典笔试.面试问题参考答案请见: http://blog.csdn.net/baimafujinji/art

算法之美_源代码发布(3)

本文辑录了<算法之美--隐匿在数据结构背后的语言>(电子工业出版社2016年出版)一书第4章之代码(P91~P117).全文目录."45个算法"目录."22个经典问题目录",以及有奖捉虫活动详情请见如下链接:http://blog.csdn.net/baimafujinji/article/details/50484348 附录中的经典笔试.面试问题参考答案请见: http://blog.csdn.net/baimafujinji/article/det

算法之美--2.2数组

2016-11-30   00:00:12 里面有几个数组使用特别需要注意的问题. 1.数组访问越界的问题: 2.数组首地址为指针常量,不能a++; 3. *p++,*(p++),*(++p)的区别. /*! * \file 算法之美--数组.cpp * * \author ranjiewen * \date 2016/11/29 21:18 * * */ #include <iostream> using namespace std; int main(int argc, char *arg

算法之美_源代码发布(10)

本文辑录了<算法之美--隐匿在数据结构背后的语言>(电子工业出版社2016年出版)一书第10章后半部分之代码(P358~P374).全文目录."45个算法"目录."22个经典问题目录",以及有奖捉虫活动详情请见如下链接:http://blog.csdn.net/baimafujinji/article/details/50484348 附录中的经典笔试.面试问题参考答案请见: http://blog.csdn.net/baimafujinji/artic

算法之美_源代码发布(6)

本文辑录了<算法之美--隐匿在数据结构背后的语言>(电子工业出版社2016年出版)一书第7章之代码(P184~P230).全文目录."45个算法"目录."22个经典问题目录",以及有奖捉虫活动详情请见如下链接:http://blog.csdn.net/baimafujinji/article/details/50484348 附录中的经典笔试.面试问题参考答案请见: http://blog.csdn.net/baimafujinji/article/de