神奇的幻方

题目描述

幻方是一种很神奇的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. spring boot aop 自定义注解 实现 日志检验 权限过滤

    核心代码: package com.tran.demo.aspect; import java.lang.reflect.Method; import java.time.LocalDateTime; ...

  2. 69.纯 CSS 创作一个单元素抛盒子的 loader

    原文地址:https://segmentfault.com/a/1190000015470411#articleHeader0 HTML code: <div class="loade ...

  3. 关于python的多行注释,启动新浏览器,循环语句乘法口诀

    1,提问:如何将python写的多行代码改写成注释,进行写下一段代码?这样可以在多个脚本中写东西? 回答:百度了一下,还真有 选中所要注释的代码  CTRL + / 然后所选的代码前面都会出现#,编程 ...

  4. HTML5 关于一些本地操作 cookie,sessionStorage,localStorage

    1,b/s 开发中经常会使用到 cookie,大部分情况下,都是由后端代码实现,那么 js 怎么实现对 cookie 的操作呢? <!DOCTYPE html> <html> ...

  5. ThreeJs 绘制点、线、面

    所有的三位物体都是由点构成,两点构成线,三点构成面,ThreeJs又如何绘制出点.线.面呢 ? 在ThreeJs中: 模型由几何体和材质构成 模型以何种形式(点.线.面)展示取决于渲染方式 1. 几何 ...

  6. DataGridView操作小记(1)

    1.获取总列数 int Column_num = DataGridView1.ColumnCount; 2.获取总行数 int Column_num = DataGridView1.RowCount; ...

  7. ORM项目中小知识点积累

    申明:一下内容均建立在零基础小白的角度上,大佬们求放过~ 1.如何通过类建立外键关联 2.模板语言固定搭配 3.浏览器报错处理 4.后台取值方式 5.外键管理修改相关操作 6.两种(给后台偷偷传递消息 ...

  8. make,makefile,cmake“暴力编译法”的个人经验或理解。

    通常我们在本地编译库(opecv.pcl)等我们喜欢使用make -jN  (N代表线程数)这样可以加速编译过程, 但是,这不一定是“线程安全”的,因为当某个线程在编译时,经常其他线程编译依赖本线程的 ...

  9. wkhtmltopdf 转pdf时元素被页面切割开

    1. <style> * { page-break-inside: avoid; page-break-after: avoid; page-break-before: avoid; } ...

  10. 基于springboot的SSM框架实现返回easyui-tree所需要数据

    1.easyui-tree easui-tree目所需要的数据结构类型如下: [ { "children": [ { "children": [], " ...