【题目描述】

幻方是一种很神奇的N×NN×N矩阵:它由数字1,2,3,……,N×N1,2,3,……,N×N构成,且每行、每列及两条对角线上的数字之和都相同。

当NN为奇数时,我们可以通过以下方法构建一个幻方:

首先将11写在第一行的中间。

之后,按如下方式从小到大依次填写每个数K(K=2,3,…,N×N)K(K=2,3,…,N×N):

1.若(K−1K−1)在第一行但不在最后一列,则将KK填在最后一行,(K−1K−1)所在列的右一列;

2.若(K−1K−1)在最后一列但不在第一行,则将KK填在第一列,(K−1K−1)所在行的上一行;

3.若(K−1K−1)在第一行最后一列,则将KK填在(K−1K−1)的正下方;

4.若(K−1K−1)既不在第一行,也不在最后一列,如果(K−1K−1)的右上方还未填数,则将KK填在(K−1K−1)的右上方,否则将KK填在(K−1K−1)的正下方。

现给定NN请按上述方法构造N×NN×N的幻方。

【输入】

只有一行,包含一个整数NN,即幻方的大小。

【输出】

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

【输入样例】

3

【输出样例】

8 1 6
3 5 7
4 9 2

【提示】

其它输入输出样例下载

数据规模与约定:

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

请看以下代码↓↓↓

#include <iostream>
using namespace std;
const int N = 40;
int a[N][N];int main() {int n;cin >> n;int x = 1, y = n/ 2 + 1;//第一个点的行列位置for (int i = 1; i <= n * n; i++) //把n*n填完循环结束{a[x][y] = i;                   if (x == 1&&y!=n) //若K-1在第一行但不在最后一列,则将K填在最后一行,(K-1)所在列的右一列x = n, y++;else if (y == n && x!=1) //如若(K-1)在最后一列但不在第一行,则将K填在第一列,(K-1)所在行的上一行x--, y = 1;else if(x == 1 && y == n)//若(K-1)在第一行最后一列,则将K填在(K-1)的正下方x++;else if(x!=1&&y!=n)//若(K-1)既不在第一行,也不在最后一列{if(a[x - 1][y + 1]) //如果(K-1)的右上方还未填数,则将K填在(K-1)的右上方,否则将K填在(K-1)的正下方{x++;}else x--,y++;}}for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++)printf("%d ", a[i][j]);printf("\n");}return 0;
}

此题为信息学奥赛一本通(C++版)在线评测系统官方真题NOIP提高组1887:【15NOIP提高组】神奇的幻方。

详细代码已在代码区呈现,关注我呦(*╹▽╹*)!!!

信息学奥赛一本通(C++版)在线评测系统 1887:【15NOIP提高组】神奇的幻方相关推荐

  1. 信息学奥赛一本通c++版在线评测系统_OPPO Reno3 Pro评测:迄今为止最“性感”的5G手机...

    一.前言和图赏 今年我们看到了一个不一样的OPPO,畅销多年的R系列停更,由Reno接棒开启OPPO手机的下个十年. 可能是刚开启的新产品线,用户接受度还不高,Reno目前还没有表现出R系列的辉煌,但 ...

  2. 信息学奥赛一本通c++版在线评测系统_Redmi K30S至尊纪念版评测:2299元还有谁

    一.前言和图赏 自去年Redmi推出K30之后,这个系列开始频繁推出新机型,迄今为止至少有5款机型在售,比产品线更新的还要快. 这是为何?一切都要从卢伟冰接手Redmi说起,扛起了小米性价比大旗,而小 ...

  3. 信息学奥赛一本通 1100:金币 | 1969:【15NOIP普及组】金币 | OpenJudge NOI 1.5 45 | 洛谷 P2669 [NOIP2015 普及组] 金币

    [题目链接] ybt 1100:金币 ybt 1969:[15NOIP普及组]金币 OpenJudge NOI 1.5 45:金币 洛谷 P2669 [NOIP2015 普及组] 金币 [题目考点] ...

  4. 经典问题的另类解法——以信息学奥赛一本通c++版1216红与黑为例

    题目链接:信息学奥赛一本通(C++版)在线评测系统 (ssoier.cn) 题目描述: 有一间长方形的房子,地上铺了红色.黑色两种颜色的正方形瓷砖.你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动 ...

  5. 信息学奥赛一本通(C++)版在线评测系统 1000 入门测试题目

    1000  入门测试题目 时间限制: 1000 ms         内存限制: 32768 KB 提交数: 254022     通过数: 152601 [题目描述] 求两个整数的和 [输入] 一行 ...

  6. 信息学奥赛一本通 1179:奖学金 | 1938:【07NOIP普及组】奖学金 | OpenJudge NOI 1.10 04 | 洛谷 P1093 [NOIP2007 普及组] 奖学金

    [题目链接] ybt 1179:奖学金 ybt 1938:[07NOIP普及组]奖学金 OpenJudge NOI 1.10 04:奖学金 洛谷 P1093 [NOIP2007 普及组] 奖学金 [题 ...

  7. 信息学奥赛一本通 1087:级数求和 | 1918:【02NOIP普及组】级数求和 | OpenJudge NOI 1.5 27

    [题目链接] ybt 1087:级数求和 ybt 1918:[02NOIP普及组]级数求和 OpenJudge NOI 1.5 27:级数求和 [题目考点] 1. 循环.求和 [解题思路] 设加和变量 ...

  8. 信息学奥赛一本通(C++版) 第二部分 基础算法 第九章 动态规划

    总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 第二部分 基础算法 第九章 动态规划 第一节 动 ...

  9. 1001:Hello,World! 【信息学奥赛一本通(C++版)在线评测系统】

    「原题」 1001:Hello,World! 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 0 通过数: 0 [题目描述] 编写一个能够输出"Hello,World!& ...

  10. 1000:入门测试题目 【信息学奥赛一本通(C++版)在线评测系统】

    为了更好的阅读体验,建议您移步至我的博客园来阅读此文章. 传送门 「原题」 1000:入门测试题目 时间限制: 1000 ms 内存限制: 32768 KB 提交数: 0 通过数: 0 [题目描述] ...

最新文章

  1. linux子系统使用rstudio,linux 下安装Rstudio
  2. NLP未来,路在何方?12位巨佬联名指路!
  3. 自学python方法-零基础初学Python人工智能的四种学习方法
  4. 安装pyecharts
  5. Leetcode-最佳买卖股票机含冷冻期
  6. C# 3.0新特性之扩展方法
  7. asp.net core 使用newtonsoft完美序列化WebApi返回的ValueTuple
  8. python读写文件代码_Python 读写文件的操作代码
  9. java中的常用日期类_Java中的常用日期类说明
  10. C语言 goto 语句 - C语言零基础入门教程
  11. Java基础十一--多态
  12. 使用EqualsBuilder和HashCodeBuilder生成hashcode和equal方法
  13. Linux虚拟机扩容
  14. 【设计模式专题】Singleton
  15. 网络安全——D模块答题模式
  16. Leetcode——四数之和问题
  17. 黑莓android系统,黑莓Passport的手机系统是什么?能升级安卓5.0吗?
  18. catia制作物料明细_CATIA导出装配文件的部件列表BOM清单到Excel文件 | 坐倚北风
  19. 城市地铁站点接驳公交多目标优化方法
  20. 《你要如何衡量你的人生》笔记与感想(三)怎样平衡周密计划与偶然机会的关系

热门文章

  1. SEO高级|移动站搭建
  2. 高斯过程回归预测 C++代码实现
  3. 通过微信聊天记录生成词云
  4. 解决win7 sp1专业版无法安装更新
  5. 微信小程序SEO排名优化
  6. pc上最好用的pdf阅读工具(PDF Xchange Viewer)
  7. XJOI1226 走迷宫
  8. python图像加密_图像加密注释的Python实现,笔记,python
  9. 装系统弹出计算机丢失,重装系统时提示缺少硬盘驱动怎么解决
  10. 数据库mysql表常见字段大小_常用数据库的字段类型及大小