百练 神奇的幻方(二维数组水题)
来源:互联网 发布:淘宝认证 编辑:程序博客网 时间:2024/05/17 06:10
神奇的幻方
- 查看
- 提交
- 统计
- 提问
- 总时间限制:
- 1000ms
- 内存限制:
- 65535kB
- 描述
幻方是一个很神奇的N*N矩阵,它的每行、每列与对角线,加起来的数字和都是相同的。
我们可以通过以下方法构建一个幻方。(阶数为奇数)
1.第一个数字写在第一行的中间
2.下一个数字,都写在上一个数字的右上方:
a.如果该数字在第一行,则下一个数字写在最后一行,列数为该数字的右一列
b.如果该数字在最后一列,则下一个数字写在第一列,行数为该数字的上一行
c.如果该数字在右上角,或者该数字的右上方已有数字,则下一个数字写在该数字的下方- 输入
- 一个数字N(N<=20)
- 输出
- 按上方法构造的2N-1 * 2N-1的幻方
- 样例输入
3
- 样例输出
17 24 1 8 1523 5 7 14 164 6 13 20 2210 12 19 21 311 18 25 2 9
#include<iostream>#include<cstring>using namespace std;int n;int mp[200][200];int cnt;int main(){cin>>n;int x,y,nx,ny;x=0;y=(2*n-1)/2;mp[x][y]=++cnt;while(true){if(cnt==(2*n-1)*(2*n-1))break;int ny=(y+1)%(2*n-1);if(x==0)nx=2*n-2;else nx=x-1;if(x==0&&y==2*n-2){nx=1;ny=2*n-2;mp[nx][ny]=++cnt;}else if(mp[nx][ny]){nx=(x+1)%(2*n-1);ny=y;mp[nx][ny]=++cnt;}else mp[nx][ny]=++cnt;x=nx;y=ny;}for(int i=0;i<(2*n-1);i++){for(int j=0;j<(2*n-1);j++){if(j==0)cout<<mp[i][j];else cout<<" "<<mp[i][j];}cout<<endl;}return 0;}
阅读全文
0 0
- 百练 神奇的幻方(二维数组水题)
- 二维数组练习22_神奇的幻方
- 百练noi 22:神奇的幻方
- 百练 反反复复(二维数组水题)
- 神奇的口袋(百练2755)
- 神奇的幻方
- 神奇的幻方
- 神奇的幻方
- 神奇的幻方
- 二维数组的神奇用法(杭电1004)
- 神奇的幻方(NOIP2015)
- 神奇的矩阵 二维树状数组
- 百练2755 神奇的口袋 背包水
- 神奇的口袋(百练2755) ( DFS + DP )
- NOIP2015 神奇的幻方 解题报告(水题模拟)
- openjudge 神奇的幻方
- 【NOIP2015】神奇的幻方
- 【NOIP2015】神奇的幻方
- Java重要的数据结构Set,List,Map
- [宏]_IO, _IOR, _IOW, _IOWR 宏的用法与解析
- excel录制宏运行规划求解不能运行的问题
- 1、python面向对象之HelloWord
- 刘未鹏 : 数学之美番外篇:平凡而又神奇的贝叶斯方法
- 百练 神奇的幻方(二维数组水题)
- Android窗口管理分析(2):WindowManagerService窗口管理之Window添加流程
- Triangles
- 基于jquery的锚点滚动插件(百度百科效果) anchorScroll.js
- Android-NavigationView+DrawerLayout实现抽屉菜单
- linux学习笔记之系统目录结构
- Mac操作系统输入法快捷键设置
- Hive的数据存储
- Batch Normalization