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

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

 #include <stdio.h>
#include <string.h>
int a[][];
int main(){
int n;
int k=;
while(scanf("%d",&n)!=EOF){
if(!k)k=;else printf("\n");
memset(a,,sizeof(a));
a[][n/]=;
int r=,c=n/;
int r0=,c0=n/;
for(int i=;i<=n*n;i++){
r=((r+n)-)%n;
c=((c+n)+)%n;
if(a[r][c]||(r0==&&c0==n-)){
a[r0+][c0]=i;
r=r0+;c=c0;
}
else{
a[r][c]=i;
}
r0=r;c0=c;
}
for(int i=;i<n;i++){
for(int j=;j<n-;j++){
printf("%d ",a[i][j]);
}
if(n)printf("%d",a[i][n-]);
printf("\n");
}
}
return ;
}

SDUST 作业10 Problem D 魔方阵的更多相关文章

  1. SDUST 作业10 Problem I 液晶显示

    Description 你的朋友刚买了一台新电脑,他以前用过的最强大的计算工具是一台袖珍计算器.现在,看着自己的新电脑,他有点失望,因为他更喜欢计算器上的LC显示器.所以,你决定写一个LC显示风格的程 ...

  2. SDUST作业10 Problem J: 提取缩略词

    Description 在英文文献中,尤其是专业文献中,经常有很多的缩略词,如CPU代表Central Processing Unit等.为了方便学习,Qili决定从一批英文论文中提取出所有的缩略词以 ...

  3. Project 3:N级魔方阵

    魔方阵:由n*n个数字所组成的n阶方阵,具有各对角线,各横列与纵行的数字和都相等的性质,称为魔方阵.而这个相等的和称为魔术数字.若填入的数字是从1到n*n,称此种魔方阵为n阶正规魔方阵. 目标:输入一 ...

  4. Python旋转魔方阵

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

  5. C语言---魔方阵

    魔方阵的定义:在n*n的方阵中,每一行的和=每一列的和=对角线的和.(本文中涉及的n为大于3的奇数). 例如3*3的魔方阵为: 5*5的魔方阵为: 如何写魔方阵呢? 1.数字1位于第一行的正中间2.下 ...

  6. 基于visual Studio2013解决C语言竞赛题之0523魔方阵

     题目

  7. 团队作业10——事后分析(Beta版本)

    团队作业10--事后分析(Beta版本) 目录 一.设想与目标 二.计划 三.资源 四.变更管理 五.设计与实现 六.测试与发布 七.总结 八.图片和贡献分分配 一.设想和目标 1.我们的软件要解决什 ...

  8. 【集美大学1411_助教博客】团队作业10——项目复审与事后分析(Beta版本)

    写在前面的话 软件工程课结束了,大家开心吗?是不是再也不用熬夜写代码了?如果这门课你真的熬夜写代码了,相信你一定有收获,如果这门课结束了你觉得是自己一个全新的开始,那么这门课的意义就实现了.团队作业全 ...

  9. 【2017集美大学1412软工实践_助教博客】团队作业10——项目复审与事后分析(Beta版本)

    写在前面的话 转眼轰轰烈烈本学期的软工实践就结束了,这个过程中想必在熬夜敲代码,激烈讨论中留下诸多回忆的同时,也收获了不少.恭喜所有团队完成了本阶段冲刺,此外,由于大家的贡献分给的都很平均,将个人贡献 ...

随机推荐

  1. POJ 2104 【主席树】【区间第K大】

    #include<stdio.h> #include<algorithm> #include<string.h> #define MAXN 100010 #defi ...

  2. hive处理hbase数据

    CREATE EXTERNAL TABLE table1( key string, zoneid int, result int, ) STORED BY 'org.apache.hadoop.hiv ...

  3. (转)配置Website的IIS时遇到的问题与解决方法

    在部署WebSite时遇到问题,刚好发现Eric Sun的文章,因此转载做个副本. 原文地址:http://www.cnblogs.com/mingmingruyuedlut/archive/2011 ...

  4. The 2013 ACM-ICPC Asia Changsha Regional Contest - K

    Pocket Cube Time Limit: 2 Seconds      Memory Limit: 65536 KB Pocket Cube is a 3-D combination puzzl ...

  5. DP编辑距离

    俄罗斯科学家Vladimir Levenshtein在1965年提出了编辑距离概念. 编辑距离,又称Levenshtein距离,是指两个字符串之间,由一个转成另一个所需的最少编辑操作次数.许可的三种编 ...

  6. python读取数据库数据,读取出的中文乱码问题

    conn = pymysql.connect( host='127.0.0.1', port=3302, user='username', passwd='password', db=database ...

  7. 翻译「C++ Rvalue References Explained」C++右值引用详解 Part8:Perfect Forwarding(完美转发):解决方案

    本文为第八部分,目录请参阅概述部分:http://www.cnblogs.com/harrywong/p/cpp-rvalue-references-explained-introduction.ht ...

  8. Flash图表控件FusionCharts如何在图表中显示标识和图片

    在FusionCharts的图表中显示外部商标 使用FusionCharts之后,用户可以在运行时加载需要在图表中显示的外部标识/图片/图像.这个标识可以GIF / JPEG / PNG或SWF文件格 ...

  9. Facebook等使用苹果源生分享

         1.Facebook官方的SDK分享               2.ShareSDK,第三方集成的分享方式      3.网页分享方式分享      4.IOS6之后,苹果自己集成了对于F ...

  10. 华为OJ平台——密码强度等级

    题目描述: 密码按如下规则进行计分,并根据不同的得分为密码进行安全等级划分. 一.密码长度: 5 分: 小于等于4 个字符 10 分: 5 到7 字符 25 分: 大于等于8 个字符 二.字母: 0  ...