博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【NOIP2015提高组Day1】 神奇的幻方
阅读量:4635 次
发布时间:2019-06-09

本文共 1474 字,大约阅读时间需要 4 分钟。

【问题描述】

幻方是一种很神奇的 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)的右上方,否则将K填在(K− 1)的正下方 现给定N,请按上述方法构造 N*N 的幻方。

【输入格式】

输入文件名为magic.in。  输入文件只有一行,包含一个整数N,即幻方的大小。

【输出格式】

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

【题解】

一个水水的搜索。

【代码】

var  a:array [0..40,0..40] of longint;  n:longint;procedure print;var  i,j:longint;begin  for i:=1 to n do    begin      for j:=1 to n do        write(a[i,j],' ');      writeln;    end;end;procedure main(m,x,y:longint);var  i:longint;begin  if m>n*n then    begin      print;      halt;    end;  if (x=1) and (y<>n) then    begin      a[n,y+1]:=m;      main(m+1,n,y+1);    end else  if (x<>1) and (y=n) then    begin      a[x-1,1]:=m;      main(m+1,x-1,1);    end else  if (x=1) and (y=n) then    begin      a[x+1,y]:=m;      main(m+1,x+1,y);    end else    begin      if a[x-1,y+1]=0 then begin a[x-1,y+1]:=m; main(m+1,x-1,y+1); end                      else begin a[x+1,y]:=m; main(m+1,x+1,y); end;    end;end;begin  assign(input,'magic.in');  assign(output,'magic.out');  reset(input);  rewrite(output);  readln(n);  a[1,n div 2+1]:=1;  main(2,1,n div 2+1);  close(input);  close(output);end.

转载于:https://www.cnblogs.com/zyx-crying/p/9319581.html

你可能感兴趣的文章
琐碎的思绪
查看>>
shell 3数组
查看>>
29个简单直观的移动设备网页设计
查看>>
webform(七)分页
查看>>
中国互联网的十一种盈利模式
查看>>
php中$_REQUEST、$_POST、$_GET的区别和联系小结
查看>>
看了极光推送技术原理的几点思考
查看>>
【转】Vue.js 2.0 快速上手精华梳理
查看>>
【题解】BZOJ 3065: 带插入区间K小值——替罪羊树套线段树
查看>>
OpenCV矩阵运算
查看>>
CF 567D(One-Dimensional Battle Ships-二分)
查看>>
从设计到实现,一步步教你实现Android-Universal-ImageLoader-辅助类
查看>>
redis 安装启动及设置密码windows
查看>>
python 生成验证码
查看>>
从零开始用 Flask 搭建一个网站(二)
查看>>
leetcode-93-复原ip地址
查看>>
RAID详解[RAID0/RAID1/RAID10/RAID5]
查看>>
MySQL 基础内容
查看>>
导航条——收缩式导航菜单
查看>>
经常使用ARM汇编指令
查看>>