信息学奥赛一本通(C++版)在线评测系统 1887:【15NOIP提高组】神奇的幻方
【题目描述】
幻方是一种很神奇的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提高组】神奇的幻方相关推荐
- 信息学奥赛一本通c++版在线评测系统_OPPO Reno3 Pro评测:迄今为止最“性感”的5G手机...
一.前言和图赏 今年我们看到了一个不一样的OPPO,畅销多年的R系列停更,由Reno接棒开启OPPO手机的下个十年. 可能是刚开启的新产品线,用户接受度还不高,Reno目前还没有表现出R系列的辉煌,但 ...
- 信息学奥赛一本通c++版在线评测系统_Redmi K30S至尊纪念版评测:2299元还有谁
一.前言和图赏 自去年Redmi推出K30之后,这个系列开始频繁推出新机型,迄今为止至少有5款机型在售,比产品线更新的还要快. 这是为何?一切都要从卢伟冰接手Redmi说起,扛起了小米性价比大旗,而小 ...
- 信息学奥赛一本通 1100:金币 | 1969:【15NOIP普及组】金币 | OpenJudge NOI 1.5 45 | 洛谷 P2669 [NOIP2015 普及组] 金币
[题目链接] ybt 1100:金币 ybt 1969:[15NOIP普及组]金币 OpenJudge NOI 1.5 45:金币 洛谷 P2669 [NOIP2015 普及组] 金币 [题目考点] ...
- 经典问题的另类解法——以信息学奥赛一本通c++版1216红与黑为例
题目链接:信息学奥赛一本通(C++版)在线评测系统 (ssoier.cn) 题目描述: 有一间长方形的房子,地上铺了红色.黑色两种颜色的正方形瓷砖.你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动 ...
- 信息学奥赛一本通(C++)版在线评测系统 1000 入门测试题目
1000 入门测试题目 时间限制: 1000 ms 内存限制: 32768 KB 提交数: 254022 通过数: 152601 [题目描述] 求两个整数的和 [输入] 一行 ...
- 信息学奥赛一本通 1179:奖学金 | 1938:【07NOIP普及组】奖学金 | OpenJudge NOI 1.10 04 | 洛谷 P1093 [NOIP2007 普及组] 奖学金
[题目链接] ybt 1179:奖学金 ybt 1938:[07NOIP普及组]奖学金 OpenJudge NOI 1.10 04:奖学金 洛谷 P1093 [NOIP2007 普及组] 奖学金 [题 ...
- 信息学奥赛一本通 1087:级数求和 | 1918:【02NOIP普及组】级数求和 | OpenJudge NOI 1.5 27
[题目链接] ybt 1087:级数求和 ybt 1918:[02NOIP普及组]级数求和 OpenJudge NOI 1.5 27:级数求和 [题目考点] 1. 循环.求和 [解题思路] 设加和变量 ...
- 信息学奥赛一本通(C++版) 第二部分 基础算法 第九章 动态规划
总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 第二部分 基础算法 第九章 动态规划 第一节 动 ...
- 1001:Hello,World! 【信息学奥赛一本通(C++版)在线评测系统】
「原题」 1001:Hello,World! 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 0 通过数: 0 [题目描述] 编写一个能够输出"Hello,World!& ...
- 1000:入门测试题目 【信息学奥赛一本通(C++版)在线评测系统】
为了更好的阅读体验,建议您移步至我的博客园来阅读此文章. 传送门 「原题」 1000:入门测试题目 时间限制: 1000 ms 内存限制: 32768 KB 提交数: 0 通过数: 0 [题目描述] ...
最新文章
- linux子系统使用rstudio,linux 下安装Rstudio
- NLP未来,路在何方?12位巨佬联名指路!
- 自学python方法-零基础初学Python人工智能的四种学习方法
- 安装pyecharts
- Leetcode-最佳买卖股票机含冷冻期
- C# 3.0新特性之扩展方法
- asp.net core 使用newtonsoft完美序列化WebApi返回的ValueTuple
- python读写文件代码_Python 读写文件的操作代码
- java中的常用日期类_Java中的常用日期类说明
- C语言 goto 语句 - C语言零基础入门教程
- Java基础十一--多态
- 使用EqualsBuilder和HashCodeBuilder生成hashcode和equal方法
- Linux虚拟机扩容
- 【设计模式专题】Singleton
- 网络安全——D模块答题模式
- Leetcode——四数之和问题
- 黑莓android系统,黑莓Passport的手机系统是什么?能升级安卓5.0吗?
- catia制作物料明细_CATIA导出装配文件的部件列表BOM清单到Excel文件 | 坐倚北风
- 城市地铁站点接驳公交多目标优化方法
- 《你要如何衡量你的人生》笔记与感想(三)怎样平衡周密计划与偶然机会的关系