神奇的幻方

题目描述

幻方是一种很神奇的N∗ N矩阵:它由数字 1,2,3, … … , N ∗ N 构成,且每行、每列及两条对角线上的数字之和都相同。
当 N为奇数时,我们可以通过以下方法构建一个幻方:
首先将 1 写在第一行的中间。
之后,按如下方式从小到大依次填写每个数 K(K = 2,3, … , N ∗ N) :
1. 若 (K − 1) 在第一行但不在最后一列,则将 K填在最后一行, (K− 1) 所在列的右一列;
2. 若 (K − 1) 在最后一列但不在第一行,则将 K填在第一列, (K -1) 所在行的上一行;
3. 若 (K − 1) 在第一行最后一列,则将 K填在 (K� − 1) 的正下方;
4. 若 (K − 1) 既不在第一行,也不在最后一列,如果 (K− 1) 的右上方还未填数,
则将 K 填在(K − 1)的右上方,否则将 K 填在 (K− 1) 的正下方。
现给定 N,请按上述方法构造N*N 的幻方。

输入

输入文件名为 magic.in。
输入文件只有一行,包含一个整数 N, 即幻方的大小。

输出

输出文件名为 magic.out。
输出文件包含 N 行,每行 N 个整数,即按上述方法构造出的 N∗ N 的幻方。相邻两个整数之间用单个空格隔开。

样例输入

3

样例输出

8 1 6
3 5 7
4 9 2

提示

对于 100% 的数据, 1 ≤ N≤ 39 且 N为奇数。

代码:

 #include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int Map[][]; int main()
{
int i, j, n, k;
scanf("%d", &n);
Map[][(n + ) / ] = ;
i = ;
j = (n + ) / ;
for (k = ; k <= n * n; k++) {
if (i == && j != n) {
Map[n][j + ] = k;
i = n;
j++;
continue;
}
if (j == n && i != ) {
Map[i - ][] = k;
i--;
j = ;
continue;
}
if (i == && j == n) {
Map[i + ][j] = k;
i++;
continue;
}
if (i != && j != n) {
if (Map[i - ][j + ] == ) {
Map[i - ][j + ] = k;
i--;
j++;
}
else {
Map[i + ][j] = k;
i++;
}
}
}
for (i = ; i <= n; i++) {
for (j = ; j < n; j++) {
printf("%d ", Map[i][j]);
}
printf("%d\n", Map[i][j]);
}
return ;
}

[模拟][NOIP2015]神奇的幻方的更多相关文章

  1. 题解【洛谷P2615】[NOIP2015]神奇的幻方

    题目描述 幻方是一种很神奇的 \(N \times N\) 矩阵:它由数字 \(1,2,3,\cdots \cdots ,N \times N\) 构成,且每行.每列及两条对角线上的数字之和都相同. ...

  2. NOIP2015神奇的幻方

    题目描述 幻方是一种很神奇的 N∗N 矩阵:它由数字1,2,3,⋯⋯,N×N 构成,且每行.每列及两条对角线上的数字之和都相同. 当 N 为奇数时,我们可以通过下方法构建一个幻方: 首先将 1 写在第 ...

  3. COGS 2104. [NOIP2015]神奇的幻方

    ★   输入文件:2015magic.in   输出文件:2015magic.out   简单对比时间限制:1 s   内存限制:256 MB 模拟 一开始数组开小了.. 屠龙宝刀点击就送 #incl ...

  4. 2015 NOIP day1 t1 神奇的幻方 模拟

    神奇的幻方 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.luogu.org/problem/show?pid=2615 Descri ...

  5. NOIP2015 D1T1 神奇的幻方

    洛谷P2615 很简单的模拟题……每枚举一个点只要保存上一个点的x,y值即可,不用开数组存放 另外题目中对于K的操作都在K-1的九宫格范围内,所以我们巧妙运用++和--就可以做到每个分支一行代码 还有 ...

  6. 神奇的幻方(NOIP2015)

    先给题目链接:神奇的幻方 太水了这题,直接模拟就行,直接贴代码. #include<bits/stdc++.h> using namespace std; int main(){ int ...

  7. P2615 神奇的幻方

    P2615 神奇的幻方 题目描述 幻方是一种很神奇的N*N矩阵:它由数字1,2,3,……,N*N构成,且每行.每列及两条对角线上的数字之和都相同. 当N为奇数时,我们可以通过以下方法构建一个幻方: 首 ...

  8. noip2015day1 T1 4510 神奇的幻方

    4510 神奇的幻方 noip2015day1 T1  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Descripti ...

  9. 洛谷 P2615 神奇的幻方

    传送门 I'm here! 思路 这个题,我们可以直接去模拟,因为范围很小,且\(N\)都是奇数 直接构造一个矩阵,初始值都为\(0\),然后\(while\)循环,根据题目给出的\(4\)个条件进行 ...

随机推荐

  1. 214. Spring Security:概述

    前言 在之前介绍过了Shiro之后,有好多粉丝问SpringSecurity在Spring Boot中怎么集成.这个系列我们就和大家分享下有关这方面的知识. 本节大纲 一.什么是SpringSecur ...

  2. electron builder 打包错误 cannot unpack electron zip file 解决方案

    npm run buildwin > study01@1.0.0 buildwin F:\Nodejs\electron\Test\study01> electron-builder -- ...

  3. 【HDFS API编程】删除文件

    所有操作都是以fileSystem为入口进行,我们使用fileSystem下的delete方法进行删除文件操作,删除的时候必须慎重. 直接上代码: /** * 删除文件 * @throws Excep ...

  4. linux gcc 静态 动态链接库

    静态链接库 首先生成依赖函数的目标文件 gcc -c source1.c source2.c; 然后归档目标文件到静态库 ar -rcs libYourID.a obj1.o obj2.o; 然后我们 ...

  5. 使用Python+turtle绘制同心圆

    问题描述:数学定义上是指:同一平面上同一圆心而半径不同的圆.简单来说就是:圆心相同半径不同的圆,如果几个圆的圆心是同一点,那么这几个圆就叫做同心圆. 本文使用turtle绘制一个类似“箭靶”的同心圆. ...

  6. 渐进反馈式搜索技术助力运维工程师——Linux命令高效检索

    日常生活工作中,我们通过搜索引擎查询相关资料时,经常遇到不知如何指定准确关键词的情况,仅仅根据指定大概范围的关键词时,搜索结果往往不能尽如人意. <信息导航>APP最新版本(Ver 1.1 ...

  7. anaconda安装Opencv报错:Could NOT find PythonLibs: Found unsuitable version "2.7.6",

    机器上装了两个python,一个是默认的,一个是anaconda.安装opencv时就报错了: -- Found PythonInterp: /home/deeplp/anaconda2/bin/py ...

  8. thinkphp5.1的公共函数库 common.php

    首先引入Db类 或者是模型 use think\Db; 然后写公共函数 function getUserName($id){ return Db::table('zh_user')->where ...

  9. Xilinx Zynq ZC-702 开发(02)—— 软件程序调试方法

    1.简介 本教程将指导您使用 SDK 调试应用程序项目,本教程中描述的调试步骤是非常基础的:有关更多信息,请参考 SDK 帮助中的调试任务. 在使用本教程之前,您应该已经创建了一个应用程序项目,并在工 ...

  10. 基于C/S 结构的IM即时通讯软件--上篇

    目的:实现类似QQ群聊的聊天室,可以看到好友列表及互相传送信息. 分析:可基于C/S结构实现即时通讯 1.创建基于对话框的MFC程序(支持windows套接字),并增加相应的类与结构体,完善对话框界面 ...