Description

所谓N阶魔方阵,是一个N*N的方阵,其元素由1到N^2组成,且方阵每行每列以及对角线的元素和相等。如三阶魔方阵:
8 1 6
3 5 7
4 9 2
魔方阵的规律如下:
从1~N*N的 各个数依次如下规则存放:
(1) 1在第一行中间一列;
(2) 每一个数存放的行比前一个数的行数减一,列数加一(如上的三阶方阵5在4的上一行,后一列);
(3) 如果上一个数在第一行,则下一个数在最后一行,列数加一;
(4) 如果上一个数在最后一列,则下一个数在第一列,行数减一;
(5) 如果按上述规则确定的位置已经有数,或上一个数在第一行第N列,则下一个数放在上一个数的正下方。

Input

输入包含多组数据,每组为一个小于100的正奇数。

Output

对于每个输入的N,输出N阶魔方阵;两组数据之间用一个空行分隔。方阵中每行每两个数之间有一个空格,行首和行末没有多余的空格。

Sample Input

3

Sample Output

8 1 6
3 5 7
4 9 2

HINT

Append Code

这道题需要注意的地方是边界处理,采用的技巧有取余和边测边写

 1 #include <stdio.h>
 2 #include <string.h>
 3 int a[105][105];
 4 int main(){
 5     int n;
 6     int k=0;
 7     while(scanf("%d",&n)!=EOF){
 8         if(!k)k=1;else printf("\n");
 9         memset(a,0,sizeof(a));
10         a[0][n/2]=1;
11         int r=0,c=n/2;
12         int r0=0,c0=n/2;
13         for(int i=2;i<=n*n;i++){
14             r=((r+n)-1)%n;
15             c=((c+n)+1)%n;
16             if(a[r][c]||(r0==0&&c0==n-1)){
17                 a[r0+1][c0]=i;
18                 r=r0+1;c=c0;
19             }
20             else{
21                 a[r][c]=i;
22             }
23             r0=r;c0=c;
24         }
25         for(int i=0;i<n;i++){
26             for(int j=0;j<n-1;j++){
27                 printf("%d ",a[i][j]);
28             }
29             if(n)printf("%d",a[i][n-1]);
30             printf("\n");
31         }
32     }
33     return 0;
34 }

转载于:https://www.cnblogs.com/Wade-/p/6159283.html

SDUST 作业10 Problem D 魔方阵相关推荐

  1. 任意阶魔方阵matlab程序,【精品】任意阶魔方阵算法(c语言)

    n阶幻方是由前n^2(n的2次方)个自然数组成的一个n阶方阵,其各行.各列及两条对角线所含的n个数的和相等.洛书就是最基本的3×3阶魔方阵,做出某种最恰当的决定,横竖都有3个格. 0的倒数 a-1可以 ...

  2. 输入一个自然数N,要求输出如下的魔方阵,即边长为N*N,元素取值为1至N*N,1在左上角,呈顺时针方向依次放置各元素。

    输入一个自然数N(2<N<9),要求输出如下的魔方阵,即边长为NN,元素取值为1至NN,1在左上角,呈顺时针方向依次放置各元素. N=3时: 1 2 3 8 9 4 7 6 5 [输入样例 ...

  3. 判断魔方阵c语言程序设计_魔方阵算法及C语言实现

    1 魔方阵概念 2填充的,每一行.每一列.对角线之和均相等的方阵,阶数n = 3,4,5-.魔方阵也称为幻方阵. 例如三阶魔方阵为: 魔方阵有什么的规律呢? 魔方阵分为奇幻方和偶幻方.而偶幻方又分为是 ...

  4. 打印魔方阵(C语言)

    魔方阵是这样的方阵:它的每一行,每一列和对角线之和均相等. 输入n,要求打印由自然数构成的魔方阵(n为奇数) 魔方阵中各数排列规律如下: (1)将"1"放在第一行的中间一列: (2 ...

  5. c0604 旋转魔方阵

    [问题描述] 输入一个自然数N(2≤N≤9),要求输出如下的魔方阵,即边长为NN,元素取值为1至NN,1在左上角,呈顺时针方向依次放置各元素. N=3时: 1 2 3 8 9 4 7 6 5 [输入形 ...

  6. Matlab之魔方阵magic

    1.函数功能 magic函数是用于创建魔方阵.魔方阵的特点是:每行每列以及对角线的元素之和相等的方阵. 2.代码示例 clc; clear all;A = magic(4) sum(A(1,:)) % ...

  7. C语言程序设计谭浩强(第四版)部分课后习题作答——第六章-输出杨辉三角,输出魔方阵

    代码: 杨辉三角题目较为简单,魔方阵题目实现了输出任意整数即可输出对应的魔方阵 #include<stdio.h> #include<stdlib.h> #include< ...

  8. Java: 打印魔方阵

    输入一个自然数N(2≤N≤9),要求输出如下的魔方阵,即边长为N*N,元素取值为1至N*N,1在左上角,呈顺时针方向依次放置各元素.  N=3时:      1    2    3         8 ...

  9. 奇数魔方阵c语言程序设计,《C语言程序》课程设计报告书魔方阵程序设计

    <<C语言程序>课程设计报告书魔方阵程序设计>由会员分享,可在线阅读,更多相关<<C语言程序>课程设计报告书魔方阵程序设计(17页珍藏版)>请在人人文库 ...

  10. C语言基础算法:魔方阵

    C语言基础算法:魔方阵. 核心玩法:第一个元素放置第一排(第0行)中间位置,依次往右上方填充数据, 若是 1.右上角行,列越界,该元素放置上一元素下方a(i+2)(j-1)位置 2.右上角行越界,而列 ...

最新文章

  1. 干货丨从硬件配置到框架选择,请以这种姿势入坑深度学习
  2. vim java 注释_centOS7 下的vim java补全
  3. Play Framework 2.2.6 安装
  4. 传递给后台的Json数据解析
  5. [vue] webpack打包vue速度太慢怎么办?
  6. 铁血规则:事件预订与取消预订
  7. 微信墙服务器地址,一面微信墙的诞生(3) 用户端界面的创建
  8. Python第十二章-多进程和多线程01-多进程
  9. Java集合系列---LinkedHashMap源码解析
  10. Pycharm配置Git教程
  11. 工时管理php,现场管理:标准工时和产能如何计算
  12. OMRON软件安装与配置
  13. UVA 10066 The Twin Towers
  14. 中科院计算机技术研究所张浩,中国科学院计算技术研究所 韩 琥 博士
  15. 计算机重做系统有什么好处,电脑卡重装系统有用吗|电脑太卡可以重装系统解决吗...
  16. (logN)²是O(N)的
  17. 实验三 面向对象(二)(预习报告)
  18. 回文树(模板)+ 例题
  19. maven依赖顺序原则
  20. 机器学习——贝叶斯算法(一)

热门文章

  1. 如何授权您的Mac播放AppleMusic?
  2. 轻松调整,提升写作效率,让 Word 更好地为你所用
  3. FTP服务器:Rumpus for Mac
  4. Office远程代码执行漏洞CVE-2017-8570 大部分版本受影响 PoC已经公开
  5. (转 留存)Windows环境下的NodeJS+NPM+GIT+Bower安装配置步骤
  6. 一小时学会用Python Socket 开发可并发的FTP服务器
  7. 网站测试自动化系统—在测试代码中硬编码测试数据
  8. 任意文件夹下打开cmd窗口
  9. 让程序员崩溃只需要一句话
  10. Java项目权威排名:Nacos未上版,gradle排名第二,Maven排名28