689D Magic Odd Square 奇数幻方
1 奇数阶幻方构造法
(1) 将1放在第一行中间一列;
(2) 从2开始直到n×n止各数依次按下列规则存放:按 45°方向行走,向右上,即每一个数存放的行比前一个数的行数减1,列数加1
(3) 如果行列范围超出矩阵范围,则回绕。例如1在第1行,则2应放在最下一行,列数同样加1;
(4) 如果按上面规则确定的位置上已有数,或上一个数是第1行第n列时,则把下一个数放在上一个数的下面。
#include<iostream> #include<algorithm> #include<cstring> #include<vector> #include<stdio.h> #include<stdlib.h> #include<queue> #include<math.h> #include<map> #define INF 0xffffffff #define MAX 1005 #define Temp 1000000000 #define MOD 1000000007using namespace std;int Map[MAX][MAX];void MagicSquare(int n) {Map[1][(n+1)/2]=1;//首先填第一行中间列 1int x=1,y=(n+1)/2;for(int i=2;i<=n*n;i++){if(x==1 && y==n)//若当前位置为(1,n)则下一个数填到当前数字下方 {x=x+1;y=y;Map[x][y]=i;continue;}if(y==n)//若超出边界则回绕 {if(Map[x-1][1]==-1){x=x-1;y=1;Map[x][y]=i;}else{x=x+1;Map[x][y]=i;}continue;}if(x==1)//若超出边界则回绕 {if(Map[n][y+1]==-1){x=n;y=y+1;Map[x][y]=i;}else{x=x+1;Map[x][y]=i;}continue;}else//向右上方填 {if(Map[x-1][y+1]!=-1)//若右上方已有数字,当前数字填当前位置下方 {x=x+1;y=y;Map[x][y]=i;}else{x=x-1;y=y+1;Map[x][y]=i;}continue;}} }int main() {int n;while(scanf("%d",&n)!=EOF){memset(Map,-1,sizeof(Map));MagicSquare(n);for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){printf("%d%c",Map[i][j],j==n?'\n':' ');}}}return 0; }
View Code
转载于:https://www.cnblogs.com/alan-W/p/6008863.html
689D Magic Odd Square 奇数幻方相关推荐
- Educational Codeforces Round 16 C. Magic Odd Square 矩阵构造
传送门 文章目录 题意: 思路: 题意: 给你一个奇数nnn,让你构造一个n∗nn*nn∗n的矩阵,矩阵的每个位置依次填上[1,n∗n]之内的数[1,n*n]之内的数[1,n∗n]之内的数,满足每行. ...
- Magic Odd Square 思维
Find an n × n matrix with different numbers from 1 to n2, so the sum in each row, column and both ma ...
- 【模拟】Codeforces 710C Magic Odd Square
题目链接: http://codeforces.com/problemset/problem/710/C 题目大意: 构造一个N*N的幻方.任意可行解. 幻方就是每一行,每一列,两条对角线的和都相等. ...
- 奇数阶幻方法C语言运用指针,奇数幻方的构造方法(转载)
幻方简介 幻方又称魔方,是一组排放在正方形中的整数组成,其中每行.每列以及两条对角线上数之和均相等.通常幻方从1到N2的连续整数组成,其中N为正方形的行(也是列)的数目.所以N阶幻方有N行N列,由整数 ...
- c 语言奇数幻方代码,【C】——幻方算法(示例代码)
一.幻方按照阶数可分成了三类,即奇数阶幻方.双偶阶幻方.单偶阶幻方. 二.奇数阶幻方(劳伯法) 奇数阶幻方最经典的填法是罗伯法.填写的方法是: 把1(或最小的数)放在第一行正中:按以下规律排列剩下的( ...
- 使用jquery实现隔行换色($(tbody tr:odd)获取奇数行和$(tbody tr:even)获取偶数行)以及CSS类操作addClass()的使用
使用jquery实现隔行换色 技术分析 最主要的就是jquery的选择器 获取tbody的奇数行("tbodytr:odd")设置背景颜色在获取tbody的偶数行("tb ...
- 奇数幻方的经典解决方法--右上方填数法
幻方,也教纵横图,就是在n×n的方阵中放入1到n 2个自然数:在一定的布局下,其各行.各列和两条对角线上的数字之和正好都相等.这个和数就叫做"幻方常数"或幻和. 构造幻方的方法: ...
- HDU - 1998 奇数阶魔方
传送门 文章目录 题意: 思路: 题意: 给你一个奇数nnn,构造一个nnn阶幻方. 3≤n≤193\le n\le 193≤n≤19 思路: 模板题了,直接构造一个幻方即可. 首先在第一行中间放一个 ...
- 2016区域赛前冲刺训练
UPD 2016.10.23 shift-and (2题) Codeforces 训练 现在已经完成了: 191 [Codeforces Round #377] (6/6) Div 2 A Buy a ...
最新文章
- 美多商城之商品(首页广告)
- 供应商管理(Supplier Management)
- 添加softmax层_PyTorch入门之100行代码实现softmax回归分类
- mysql5.7 忘记root密码后,如何找回密码?
- warning C4091: “typedef ”: 没有声明变量时忽略“_matcher”的左侧
- suse查看mysql内存使用情况_MySQL 慢查询日志(Slow Query Log)
- 1582年日历怎么了_【知乎周边】知乎2020年日历开箱+测评
- 通达oa wbupload.php,关于通达OA上传附件类型限制的设置
- 数论 —— 毕达哥拉斯三元组
- 在2003上实现Custom Task Pane
- 论述计算机辅助设计技术主要包括的内容,计算机辅助设计复习思考题
- 安卓10不支持qmc解码_国产定制ROM玩烂了的功能,最新安卓11原生系统确定不支持...
- This request has been blocked; the content must be served over HTTPS
- 关于MATLAB未定义函数或变量 ‘wavread‘的很简单的解决办法
- 如何用计算机环境设计,计算机绘图软件在环境艺术设计中运用.doc
- 哪种款式的耳机不伤耳朵,五款不伤害耳朵听力的骨传导耳机推荐
- c语言编写一个简单的答题系统
- DNS故障的几种常见原因及解决方法
- 一个普通的小活动让超市回头客源源不断?方案简单到爆
- pagehelper里的PageInfo自定义分页
热门文章
- 如何设置 homestead zhong redis 开机自启_CentOS安装Redis
- Linux16.04安装Matlab2016b详细教程
- [机器学习]gcForest算法理解
- 【labelme】改造labelme
- BLAS+BLACS+LAPACK+SCALAPACK安装
- 美国人口普查年收入比赛_训练网络对收入进行分类:成人普查收入数据集
- Android USB 属性设置:ADB、RNDIS、MTP等
- 《现代语音信号处理》(胡航著)第1-6章简介
- C++ 输出调试信息 类似MFC的TRACE等宏
- C语言实现上三角蛇形矩阵不用数组,蛇形矩阵c语言实现