任意N阶幻方算法实现】的更多相关文章

算法原理请参考:https://www.zhihu.com/question/23531676 先定义一些通用的函数,比如创建空幻方,删除幻方,打印幻方. 创建幻方 int **NewMagicS(int n) { int **magic = new int*[n]; for (int k = 0; k < n; k++) magic[k] = new int[n]; return magic; } 删除幻方 void DeleteMagicS(int **magic, int n) { for…
一.关于单偶数阶幻方和双偶数阶幻方 (一)单偶数阶幻方(即当n=4k+2时) 任何4k+2 阶幻方都可由2k+1阶幻方与2×2方块复合而成,6是此类型的最小阶. 以6阶为例,可由3阶幻方与由0,1,2,3组成的2×2的小方块拼成一个6×6的大方块复合而成. 其中,3阶幻方(洛书)如下图1所示, (图1) 800x600 Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE MicrosoftInternetExplorer4 /* Sty…
魔方又称幻方.纵横图.九宫图,最早记录于我国古代的洛书.据说夏禹治水时,河南洛阳附近的大河里浮出了一只乌龟,背上有一个很奇怪的图形,古人认为是一种祥瑞,预示着洪水将被夏禹王彻底制服.后人称之为"洛书"或"河图",又叫河洛图. 南宋数学家杨辉,在他著的<续古摘奇算法>里介绍了这种方法:只要将九个自然数按照从小到大的递增次序斜排,然后把上.下两数对调,左.右两数也对调:最后再把中部四数各向外面挺出,幻方就出现了. (摘自<趣味数学辞典>) 在西方…
一.设计的流程图如下所示 二.Java 语言的代码实现 package MagicSquare; //奇数幻方的实现 public class Magic_Odd { //n 为幻方的阶数 public static int[][] magicOdd(int n) { //构造一个(n+2)*(n+2)阶的方阵 int[][] square = new int[n + 1][n + 1]; int i = 0; int j = (n + 1) / 2; //从第一行的中间那个数字(是1)开始填幻…
前序 最近在学习一些经典的算法,搞得头昏脑涨,就想换换脑子.在家里的旧书堆里面乱翻,无意中将一本具有十多年历史的小学数学奥林匹克竞赛的书发掘了出来,能放到现在挺不容易的,就拿起来随便翻翻.看了看目录,一个个熟悉的问题又一次的展现在了我的面前,看着看着就翻到了n阶幻方这块(其实那时候我们不这么叫).记得当时学这个问题的时候就感觉特别有意思,现在看看也是如此,于是乎便诞生了本片文章.        本文用较大的篇幅先介绍了n阶幻方,因为这个问题挺有意思.但是本文的重点却在第二节---由n阶幻方引发的…
转载自:http://blog.csdn.net/fengchaokobe/article/details/7437767 目录        第一节 n阶幻方问题       第二节 由n阶幻方引发的思考 正文 第一节 n阶幻方问题 所谓n阶幻方问题,俗称“横竖斜相加和相等”(我们当时就是这么叫的).用术语说就是:在一个N行N列的方格表中,有1,2,3......N*N-1,N*N这N*N个整数,且其对角线.横行.纵行的数字和都相等.       好了,在具体详解该问题之前,我们先看个例子,熟…
一.幻方按照阶数可分成了三类,即奇数阶幻方.双偶阶幻方.单偶阶幻方. 二.奇数阶幻方(劳伯法) 奇数阶幻方最经典的填法是罗伯法.填写的方法是: 把1(或最小的数)放在第一行正中:按以下规律排列剩下的(n×n-1)个数:(1)每一个数放在前一个数的右上一格: (2)如果这个数所要放的格已经超出了顶行那么就把它放在底行,仍然要放在右一列: (3)如果这个数所要放的格已经超出了最右列那么就把它放在最左列,仍然要放在上一行: (4)如果这个数所要放的格已经超出了顶行且超出了最右列,那么就把它放在底行且最…
这题就是一个sb题,本来很水,硬是说得很含混.奇数阶幻方构造其实有好多方法,这题既不special judge,也不说清楚,以为这样能把水题变成难题似的,简直想骂出题人. /* * Author : ben */ #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <ctime> #include <iostream> #i…
C. Magic Odd Square time limit per test:1 second memory limit per test:256 megabytes input:standard input output:standard output Find an n × n matrix with different numbers from 1 to n2, so the sum in each row, column and both main diagonals are odd.…
Find an n × n matrix with different numbers from 1 to n2, so the sum in each row, column and both main diagonals are odd. Input The only line contains odd integer n (1 ≤ n ≤ 49). Output Print n lines with n integers. All the integers should be differ…