题目链接:http://uoj.ac/problem/145

题目描述

幻方是一种很神奇的 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) 的右上方,否则将 L 填在 (K−1) 的正下方。

现给定 N ,请按上述方法构造 N∗N 的幻方。

输入格式

输入文件只有一行,包含一个正整数 N ,即幻方的大小。

输出格式

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

样例一

input

3

output

8 1 6
3 5 7
4 9 2

数据规模与约定

对于全部数据, 1≤N≤39 且 N 为奇数。

时间限制:1s

空间限制:128MB

题解:直接按照题目给的填数方式模拟即可。

AC代码:

 #include<cstdio>
#include<cstring>
int n,mp[][];
struct point{
int x,y;
}now,nex;
int cnt;
int main()
{
memset(mp,,sizeof(mp));
scanf("%d",&n);
now.x=, now.y=(n+)/, cnt=;
while(cnt<=(n*n))
{
mp[now.x][now.y]=cnt;
nex.x=(now.x-==)?(n):(now.x-);
nex.y=(now.y+==n+)?():(now.y+);
if(mp[nex.x][nex.y])
{
nex.x=(now.x+==n+)?():(now.x+);
nex.y=now.y;
} now.x=nex.x, now.y=nex.y;
cnt++;
}
for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++)
{
printf("%d",mp[i][j]);
if(j!=n) printf(" ");
}
printf("\n");
}
}

UOJ 145 - 神奇的幻方 - [简单数学题]的更多相关文章

  1. JZOJ 5773. 【NOIP2008模拟】简单数学题

    5773. [NOIP2008模拟]简单数学题 (File IO): input:math.in output:math.out Time Limits: 1000 ms  Memory Limits ...

  2. P2615 神奇的幻方

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

  3. [JZOJ5773]【NOIP2008模拟】简单数学题

    Description       话说, 小X是个数学大佬,他喜欢做数学题.有一天,小X想考一考小Y.他问了小Y一道数学题.题目如下:      对于一个正整数N,存在一个正整数T(0<T&l ...

  4. NOIP2015 D1T1 神奇的幻方

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

  5. noip2015day1 T1 4510 神奇的幻方

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

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

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

  7. [模拟][NOIP2015]神奇的幻方

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

  8. 神奇的幻方(NOIP2015)

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

  9. HDU 6467 简单数学题 【递推公式 && O(1)优化乘法】(广东工业大学第十四届程序设计竞赛)

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6467 简单数学题 Time Limit: 4000/2000 MS (Java/Others)    M ...

随机推荐

  1. 8 -- 深入使用Spring -- 8... Spring整合Hibernate

    8.8 Spring整合Hibernate 8.8.1 Spring提供的DAO支持 8.8.2 管理Hibernate的SessionFactory 8.8.3 实现DAO组件的基类 8.8.4 传 ...

  2. 关于WPF自定义控件(导航)

    1.在WPF中自定义控件(1)概述 2.在WPF中自定义控件(2) UserControl 3.在WPF中自定义控件(3) CustomControl (上) 4.在WPF中自定义控件(3) Cust ...

  3. 一张图了解SSH端口转发

    ssh和端口转发什么的,我就不想废话了,主要是ssh的命令格式真心不太好理解.网上也搜过相关文章,参差不齐.其实自己也理解怎么用,但我自己也表达不好.这几日无意碰到篇好文章,有图有真相,清楚的很,还有 ...

  4. spine-unity3D 学习笔记

    http://zh.esotericsoftware.com/spine-using-runtimes //skeletonData SkeletonAnimation skeletonAnimati ...

  5. 分析JobInProgress中Map/Reduce任务分配

    1.JobTracker能否决定给当前的TaskTracker节点分配一个Job的具体的哪一个任务? 2.什么是map本地任务? 3.nonRunningMapCache的作用是什么? 4.从Task ...

  6. iOS中UIView翻转效果实现

    本文转载至  http://baishiyun.blog.163.com/blog/static/13057117920148228261747/ 新建一个view-based模板工程,在ViewCo ...

  7. setcursor 与 showcursor

    Windows为鼠标光标保存了一个「显示计数」.如果安装了鼠标,显示计数会被初始化为0:否则,显示计数会被初始化为-1. 只有在显示计数非负时才显示鼠标光标.要增加显示计数,呼叫:ShowCursor ...

  8. 《转载》IntelliJ 2016.2 IDEA 中进行 Java Web 项目开发配置

    本文转载自 https://segmentfault.com/a/1190000007088964 1. 新建一个 Web Application 项目 打开 IntelliJ,选择新建项目: 左边栏 ...

  9. SQL - 根据天来分组比较

    SELECT COUNT(*) FROM (SELECT WeixinUserID,CONVERT(varchar(100),CreateTime, 23) AS DT FROM SiteVisite ...

  10. Linux终端多用户通信实用命令

    一  命令 1.1 write 该命令将当前终端(源)输入的字符拷贝至目标用户的终端,从而发送消息给系统中某个用户.用法如下: #write <user> <msg> [Ctr ...