[NOIP2015 提高组] 神奇的幻方

题目描述

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

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

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

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

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

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

输入格式

一个正整数 NNN ,即幻方的大小。

输出格式

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

#include <iostream>
#include <cstring>
using namespace std;
int a[50][50];
int main(){memset(a,0,sizeof(a));int n;int x,y;cin>>n;a[0][n/2]=1;x=0,y=n/2;for(int i=2;i<=n*n;++i){if(x==0&&y!=(n-1)){a[n-1][y+1]=i;x=n-1;y=y+1;continue;}else if(x!=0&&y==(n-1)){a[x-1][0]=i;x=x-1;y=0;continue;}else if(x==0&&y==(n-1)){a[x+1][y]=i;x=x+1;y=y;continue;}else if(x!=0&&y!=(n-1)&&a[x-1][y+1]==0){a[x-1][y+1]=i;x=x-1;y=y+1;continue;}else {a[x+1][y]=i;x=x+1;y=y;}}for(int i=0;i<n;++i){for(int j=0;j<n;++j){cout<<a[i][j]<<" ";}cout<<endl;}return 0;
}

[NOIP2015 提高组] 神奇的幻方 ——C++相关推荐

  1. P2615 [NOIP2015 提高组] 神奇的幻方

    题目描述 幻方是一种很神奇的 N\times NN×N 矩阵:它由数字 1,2,3,\cdots \cdots ,N \times N1,2,3,⋯⋯,N×N 构成,且每行.每列及两条对角线上的数字之 ...

  2. [NOIP2015 提高组] 神奇的幻方

    题目描述 幻方是一种很神奇的 N*NN∗N 矩阵:它由数字 1,2,3,\cdots \cdots ,N \times N1,2,3,⋯⋯,N×N 构成,且每行.每列及两条对角线上的数字之和都相同. ...

  3. 洛谷P2615 [NOIP2015 提高组] 神奇的幻方

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

  4. 洛谷-神奇的幻方-NOIP2015提高组复赛

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

  5. P2678 [NOIP2015 提高组] 跳石头

    P2678 [NOIP2015 提高组] 跳石头 题目背景 一年一度的"跳石头"比赛又要开始了! 题目描述 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选 ...

  6. 信息学奥赛一本通 1890:【15NOIP提高组】跳石头 | 洛谷 P2678 [NOIP2015 提高组] 跳石头

    [题目链接] ybt 1890:[15NOIP提高组]跳石头 洛谷 P2678 [NOIP2015 提高组] 跳石头 ybt 1247:河中跳房子 OpenJudge NOI 1.11 10:河中跳房 ...

  7. 【NOIP2015提高组】信息传递

    题目背景 NOIP2015 提高组 Day1 T2 题目描述 有 n 个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为 i 的同学的信息传递对象是编 ...

  8. 【NOIP2015提高组Day1】 神奇的幻方

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

  9. 跳石头 NOIP2015 提高组 Day2 T1

    codevs 4768 跳石头 题目描述 Description 一年一度的"跳石头"比赛又要开始了! 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好 ...

最新文章

  1. Dialog的使用(三):progressDialog
  2. 【转】父类子类指针相互转换问题
  3. oracle 排序的分析函数,oracle下数据的排序分组row_number() over()--分析函数,可用于去重...
  4. keystore文件_如何手动给APK文件签名
  5. Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again
  6. Java 的 安全性 体现在哪里?面试题
  7. 服务器系统重置,云服务器系统重置
  8. Python在一个文件夹下遍历得到所有的子文件路径和子文件后缀名
  9. 吃鱼还是吃肉 (10 分)
  10. 图像处理ORL--训练集及测试集建立--Matlab实现
  11. 微盾php脚本解密,微盾php解密(黑刀微盾解密专家)
  12. wamp phpMyAdmin error #1045 - Access denied for user root@locahost Fixed!
  13. Excel 如何提取单元格中的多个数值
  14. [2018.10.25]高通QFIL刷机:高通sdm845_la2.0用QFIL软件meta_build和flat_build刷机
  15. 如何安装第三方站点下载的Matlab工具箱或硬件支持包,亲测有效。
  16. android手机iPhone对比,iPhone 6与Android旗舰手机的身材大对比
  17. 我,程序员,告诉你年薪30万的程序员转行后,都去做什么工作了
  18. python 导入第三方包_Python第三方包的导入
  19. Ubuntu 16.04前置音频输出没有声音
  20. I-frame、B-frame、P-frame及DTS、PTS的关系(转)

热门文章

  1. 想自学python,如果做不到这几条,建议选择继续躺平刷抖音.....
  2. 解决地质云网站无法打开的问题
  3. 羽绒服10大品牌介绍
  4. 猿辅导转行卖羽绒服?网友:这是段子吗?会有新某方棉鞋、学某思秋裤吗?...
  5. 安卓(华为)安装Charles信任证书显示【暂不支持打开此类文件】解决方法
  6. Go语言笔记:base64/sha1的使用
  7. Total Commander 插件使用心得
  8. mysql常见的跳过密码登录方式
  9. canvas绘制中国国旗!
  10. 燃动羊城 不止于烘焙 第二十五届中国烘焙展览会即将开幕