当前位置: 首页 > news >正文

题解:洛谷 P2615 [NOIP 2015 提高组] 神奇的幻方

【题目来源】

洛谷:P2615 [NOIP 2015 提高组] 神奇的幻方 - 洛谷 (luogu.com.cn)

【题目描述】

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

\(N\) 为奇数时,我们可以通过下方法构建一个幻方:

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

之后,按如下方式从小到大依次填写每个数 \(K(K=2,3,\dots,N\times 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\times N\) 的幻方。

【输入】

一个正整数 \(N\),即幻方的大小。

【输出】

\(N\) 行,每行 \(N\) 个整数,即按上述方法构造出的 \(N\times N\) 的幻方,相邻两个整数之间用单空格隔开。

【输入样例】

3

【输出样例】

8 1 6
3 5 7
4 9 2

【算法标签】

《洛谷 P2615 神奇的幻方》 #模拟# #枚举# #NOIP提高组# #2015#

【代码详解】

#include <bits/stdc++.h>
using namespace std;int main()
{// 定义变量int n, a[42][42] = {0}, x, y;  // n: 幻方阶数,a: 幻方数组,x,y: 当前位置坐标cin >> n;  // 输入幻方阶数(奇数)// 初始化第一个数字的位置(第一行中间列)x = 1;y = n/2 + 1;a[x][y] = 1;  // 放置数字1// 填充幻方(从数字2到n*n)for (int i = 2; i <= n*n; i++) {// 情况1: 当前位置在第一行但不在最后一列if (x == 1 && y != n) {x = n;    // 跳到最后一行y = y + 1; // 右移一列}// 情况2: 当前位置在最后一列但不在第一行else if (y == n && x != 1) {y = 1;    // 跳到第一列x = x - 1; // 上移一行}// 情况3: 当前位置在第一行最后一列(右上角)else if (x == 1 && y == n) {x = x + 1; // 直接下移一行}// 情况4: 当前位置不在边界else if (x != 1 && y != n) {// 检查右上角是否为空if (a[x-1][y+1] == 0) {x = x - 1; // 右上移动y = y + 1;} else {x = x + 1; // 直接下移}}a[x][y] = i;  // 放置当前数字}// 输出幻方for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) {cout << a[i][j] << " ";  // 输出每个数字}cout << endl;  // 每行结束换行}return 0;
}

【运行结果】

8 1 6 
3 5 7 
4 9 2 
http://www.jsqmd.com/news/387454/

相关文章:

  • 考虑电动汽车可调度潜力的充电站两阶段市场投标策略
  • 题解:洛谷 P2550 [AHOI2001] 彩票摇奖
  • 基于labview 与三菱fx的mc协议通信 已封装好多态vi 布尔量读写 整形和长整型的读取
  • 从手工点点到AI自动生成用例,测试人的这个春天不太一样
  • 9B 上端侧:多模态实时对话,难点其实在“流”
  • 除夕夜,不聊AI了,咱聊聊心里话
  • 题解:洛谷 P1047 [NOIP 2005 普及组] 校门外的树
  • 用 SSH Key 认证提升文件传输安全:SFTP/SSH 加固实战(适合站点运维与外贸站)
  • 建议收藏|10个降AI率软件降AIGC网站评测对比,本科生必看!
  • 写论文省心了 10个AI论文平台深度测评,MBA毕业论文与学术写作必备工具推荐
  • 真心不骗你!继续教育专属降AIGC工具 —— 千笔·专业降AI率智能体
  • Flutter 网络层设计,为什么前端经验特别重要?
  • 鸿蒙如何重新定义“超级 App”
  • 百万级数据查询加速秘籍:覆盖索引与执行计划深度解析
  • 题解:洛谷 P5727 【深基5.例3】冰雹猜想
  • 高阶市场细分策略:基于聚类分析的客户画像与营销优化
  • 四、Claude Opus 4.6 三体银河纪元 -2
  • 降重省心了!顶流之选的降AI率平台 —— 千笔·专业降AI率智能体
  • 强烈安利 10 个 AI论文软件:本科生毕业论文写作必备工具测评
  • 直接上结论:自考必备!千笔·专业学术智能体,一键生成论文神器
  • 别再瞎找了!8个降AIGC工具测评:自考降AI率必备神器
  • 题解:洛谷 P1427 小鱼的数字游戏
  • 题解:洛谷 P1428 小鱼比可爱
  • 2026年1月市场热门地铺石品牌推荐及排行情况,冰裂纹/石材/蘑菇石/砌墙石/地铺石/文化石/脚踏石,地铺石厂商口碑推荐 - 品牌推荐师
  • NAACL上的45+篇亚马逊NLP论文速览
  • 题解:洛谷 P1423 小玉在游泳
  • 题解:洛谷 P1089 [NOIP 2004 提高组] 津津的储蓄计划
  • 用 Python 一键下载并整合统计年鉴 Excel 文件(自动分类合并版)
  • 题解:洛谷 P5725 【深基4.习8】求三角形
  • 题解:洛谷 P1307 [NOIP 2011 普及组] 数字反转