hdu1998 bjfu1272奇数阶幻方构造】的更多相关文章

这题就是一个sb题,本来很水,硬是说得很含混.奇数阶幻方构造其实有好多方法,这题既不special judge,也不说清楚,以为这样能把水题变成难题似的,简直想骂出题人. /* * Author : ben */ #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <ctime> #include <iostream> #i…
一.设计的流程图如下所示 二.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)开始填幻…
Magic Odd Square 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…
一.魔方介绍 魔方(这里是简称,也可以叫幻方.魔术矩阵,Magic Square)是 n×n 正方形网格(n 为每侧的单元数),里面每个单元格填充了不同的正整数 1, 2, 3, ... , n2,并且每一行.每一列和对角线中的正整数之和相等.每行.每列以及对角线上的单元格里的正整数之和又叫做魔术常数或魔方的魔术和. 幻方历史: <系辞>云:"河出图,洛出书,圣人则之."在宋朝之前,洛书的记述只有文字. 九宫图实物最早发现于西汉,1977年中国考古学家在安徽阜阳县双古堆西汉…
一.关于单偶数阶幻方和双偶数阶幻方 (一)单偶数阶幻方(即当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…
魔方又称幻方.纵横图.九宫图,最早记录于我国古代的洛书.据说夏禹治水时,河南洛阳附近的大河里浮出了一只乌龟,背上有一个很奇怪的图形,古人认为是一种祥瑞,预示着洪水将被夏禹王彻底制服.后人称之为"洛书"或"河图",又叫河洛图. 南宋数学家杨辉,在他著的<续古摘奇算法>里介绍了这种方法:只要将九个自然数按照从小到大的递增次序斜排,然后把上.下两数对调,左.右两数也对调:最后再把中部四数各向外面挺出,幻方就出现了. (摘自<趣味数学辞典>) 在西方…
前序 最近在学习一些经典的算法,搞得头昏脑涨,就想换换脑子.在家里的旧书堆里面乱翻,无意中将一本具有十多年历史的小学数学奥林匹克竞赛的书发掘了出来,能放到现在挺不容易的,就拿起来随便翻翻.看了看目录,一个个熟悉的问题又一次的展现在了我的面前,看着看着就翻到了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个整数,且其对角线.横行.纵行的数字和都相等.       好了,在具体详解该问题之前,我们先看个例子,熟…
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…
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.…
奇数阶魔方 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4861    Accepted Submission(s): 2770 Problem Description 一个 n 阶方阵的元素是1,2,...,n^2,它的每行,每列和2条对角线上元素的和相等,这样的方阵叫魔方.n为奇数时我们有1种构造方法,叫做“右上方” ,例如下面给…
由一道数学题的联想然后根据网上的做法瞎jb乱打了一下,居然对了代码精心附上了注释,有兴趣的童鞋可以看一看..不说了,上代码!(自认为结构很清晰易懂) 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192…
解决方法:1.第一个元素放在第一行中间一列 2.下一个元素存放在当前元素的上一行.下一列. 3.如果上一行.下一列已经有内容,则下一个元素的存放位置为当前列的下一行. 在找上一行.下一行或者下一列的时候,必须把这个矩阵看成是回绕的. 代码中,为了判断,当前位置是否有元素,我引入与魔方矩阵规模相同的另一个矩阵,如果魔方矩阵一个位置不为空,相应另一个矩阵那个位置为1,否则为0. /*程序的版权和版本声明部分: **Copyright(c) 2016,电子科技大学本科生 **All rights re…
算法原理请参考: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…
#include<stdio.h>#include <string.h>int main(){ int n,m; int a[40][40]={0}; scanf("%d",&n); while(n--) { scanf("%d",&m); int i; int j; memset(a,0,sizeof(a)); i=0; j=m/2; int k=1; while(k<=m*m) { if(i<0&&am…
比赛的时候花了一个多小时,以做不做 分析:可观察:中间是(n*n+1)/2, 中间的上面是n*n,以下是1, 左边是n,右面是(n*n+1)-n,并且正对角线是最左上对到最右下端添加(+1).另外一条对角线是最右上到最左下递减(-n) ,其它对角线也是这种规律. 难点:模拟的时候数据有点杂,非常easy搞错,要细心点. 心得:做题的时候要先确定思路是正确的,而且要履好思路之后在写程序. 代码: #include <cstdio> #include <cstring> int s[2…
应该不算太水吧. 17  24   1   8  15   23   5   7  14  16    4   6  13  20  22   10  12  19  21   3   11  18  25   2   9 对于上面的数据,根据题目中的提示,很容易就看到对角线上的数字是11.12.13.14.15.其他的数据,比如说2,从2往右上查就是2.3.4.5.1.描述起来好像很麻烦,但是对着图看一下就可以很容易看明白. 接下来继续观察数据,我们可以看出在第一行实际上是从1开始往右查每个数…
1 奇数阶幻方构造法 (1) 将1放在第一行中间一列; (2) 从2开始直到n×n止各数依次按下列规则存放:按 45°方向行走,向右上,即每一个数存放的行比前一个数的行数减1,列数加1 (3) 如果行列范围超出矩阵范围,则回绕.例如1在第1行,则2应放在最下一行,列数同样加1; (4) 如果按上面规则确定的位置上已有数,或上一个数是第1行第n列时,则把下一个数放在上一个数的下面. #include<iostream> #include<algorithm> #include<…
写于2012.10: 本来这是谭浩强那本<C程序设计(第四版)>的一道课后习题,刚开始做得时候去网上找最优的算法,结果发现奇数和双偶数(4的倍数)的情况下算法都比较简单,但是单偶数(2的倍数但不是4的倍数)情况一直找不到明确的算法,就连百度百科对这一问题的解释也是“因非四的倍数作法相当复杂,在此只介绍四的倍数的作法”,而且连谭浩强那本书给的答案中竟然也变相的限定了n只能为奇数(题目并未说明).在广泛查找资料后,发现了一篇由中南大学信息科学与工程学院某教授和研究生撰写的论文,介绍了任意阶幻方的算…
一.幻方按照阶数可分成了三类,即奇数阶幻方.双偶阶幻方.单偶阶幻方. 二.奇数阶幻方(劳伯法) 奇数阶幻方最经典的填法是罗伯法.填写的方法是: 把1(或最小的数)放在第一行正中:按以下规律排列剩下的(n×n-1)个数:(1)每一个数放在前一个数的右上一格: (2)如果这个数所要放的格已经超出了顶行那么就把它放在底行,仍然要放在右一列: (3)如果这个数所要放的格已经超出了最右列那么就把它放在最左列,仍然要放在上一行: (4)如果这个数所要放的格已经超出了顶行且超出了最右列,那么就把它放在底行且最…
无论是批处理文件还是shell都是没有意义的,它们只是一种工具,并且是非常低级难懂的工具. 如果不会,那就保持不会就好了.不要花费太多时间在这些没意义的事情上. 批处理的没意义体现在: 难以表达 随便一门正经的语言就比批处理清晰简洁 玄学 许多命令设计的毫无道理,白白的占用大脑容量.参数太多了,命令太多了.就连看一遍也要花费很长时间. 批处理文件注释的四种形式 :: 注释内容(第一个冒号后也可以跟任何一个非字母数字的字符) rem 注释内容(不能出现重定向符号和管道符号) %注释内容%(可以用作…
写代码,有两类追求,一种是追求实用(Coder),一种是追求代码艺术(Artist) 我是那种追实用追腻了,偶然追一下艺术(就是偶然和艺术有一腿)的那种Coder 很多人,已经习惯了for(i=0; i<n; i++)这种单调的循环,虽然这的确的使用率最高, 但在特殊场合,特殊的循环写法,不但能提升循环的效率,还能使代码更精巧 1. 质数判断 对于这个,很多人可能会直接这样写: int isPrime(int n) //函数返回1表示是质数,返回0表示不是质数 { int i; for (i =…
/** #include <stdio.h> #include <stdlib.h> int max(int n1, int n2) { return (n1 > n2) ? n1 : n2; } int main() { int a, b, c; if(a == max(a, b)) { if(a == max(a, c)) printf("%d\n", a); else if(c == max(b, c)) printf("%d\n"…
目录 题面 中文题意 比赛惨状 我的走不通的思路 \(m\)是偶数的情况 \(m\)是奇数的情况 题解的思路 另一些思路 源代码 题面 Time limit 3000 ms Memory limit 131072 kB Special judge Yes OS Windows 中文题意 把\(n\)块石头分成\(k\)堆,要求每堆石头的重量之和相等.输出是否可以实现要求.如果可以实现,还要输出每堆石头里每一块石头的重量 比赛惨状 赛场上看见的第一反应--dp?不会.然后就先扔给有点思路队友,写另…
大二软件构造第一次实验 本人本次实验操作系统:macOS high Sierra 10.13.3 任务一:MagicSquare 对于本任务,主要需要实现两个方法,一个是isLegalMagicSquare方法,一个是generateMagicSquare方法. 首先,是要实现isLegalMagicSquare方法,该方法是根据一个String fileName判断路径所指的文件内容重的数据能否构成一个幻方.若能,则返回true,否则返回false. 当然,这个方法要能够正确处理几种异常情况.…
描述 河图,黑点白点排列奥秘数阵:洛书,纵横斜三条线上数和皆15.这是一个古老的数字游戏,将1~9填入一个九宫格,使得每行.每列.对角线上数字的和都相同(为15).在西方,满足类似规律的矩阵称之为幻方. 一个n阶的幻方是一个n阶矩阵,在其中填入1~n2个正整数,使得每行每列及两条对角线上的数字和都相同.随着n的增大,幻方的解就越难求.但是,对于n为奇数的幻方,有一种独特的填数解法: 1.首先,将1填在第一行正中间: 2.依次填入2~n2,其中数字i+1填在数字i的右上角: 3.当数字i的右上角不…
问题描述 小明最近在教邻居家的小朋友小学奥数,而最近正好讲述到了三阶幻方这个部分,三阶幻方指的是将1~9不重复的填入一个3*3的矩阵当中,使得每一行.每一列和每一条对角线的和都是相同的. 三阶幻方又被称作九宫格,在小学奥数里有一句非常有名的口诀:“二四为肩,六八为足,左三右七,戴九履一,五居其中”,通过这样的一句口诀就能够非常完美的构造出一个九宫格来. 有意思的是,所有的三阶幻方,都可以通过这样一个九宫格进行若干镜像和旋转操作之后得到.现在小明准备将一个三阶幻方(不一定是上图中的那个)中的一些数…
目录 一.实验目标概述 二.实验环境配置 1.安装编写java程序的IDE--IntelliJ IDEA 2.安装Git 3.安装Junit 4.GitHub Lab1仓库的URL地址 三.实验过程 1.Magic Squares (1)isLegalMagicSquare() (2)generateMagicSquare() (3)源代码 2.Turtle Graphics (1)Problem 1:Clone and import (2)Problem 3:Turtle graphics a…
A. 24 Game Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/468/problem/A Description Little X used to play a card game called "24 Game", but recently he has found it too easy. So he invented a new game. Initially you ha…
1 /*程序的版权和版本声明部分: **Copyright(c) 2016,电子科技大学本科生 **All rights reserved. **文件名:单偶数N阶魔方矩阵 **程序作用:单偶数N阶魔方矩阵 **作者:Amoshen **完成日期:2016.11.2 **版本号:V1.0 */ #include<iostream> using namespace std; #define MAX_SIZE 100 int main(void) { int m,u,n,ROW,CIE,ROW1,…