22:神奇的幻方
2017-03-03 16:58
197 查看
22:神奇的幻方
查看提交
统计
提问
总时间限制: 1000ms 内存限制: 65535kB描述
幻方是一个很神奇的N*N矩阵,它的每行、每列与对角线,加起来的数字和都是相同的。
我们可以通过以下方法构建一个幻方。(阶数为奇数)
1.第一个数字写在第一行的中间
2.下一个数字,都写在上一个数字的右上方:
a.如果该数字在第一行,则下一个数字写在最后一行,列数为该数字的右一列
b.如果该数字在最后一列,则下一个数字写在第一列,行数为该数字的上一行
c.如果该数字在右上角,或者该数字的右上方已有数字,则下一个数字写在该数字的下方
输入一个数字N(N<=20)输出按上方法构造的2N-1 * 2N-1的幻方样例输入
3
样例输出
17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9
#include<iostream> using namespace std; int a[1001][1001]; int now=1; int tot=0; int hang,lie; int main() { int n; cin>>n; int c=2*n-1; while(tot!=(c*c)) { if(tot==0) { a[1][c/2+1]=now; now++; hang=1; lie=c/2+1; tot++; } else if(hang==1&&lie!=c) { a[c][lie+1]=now; now++; tot++; hang=c; lie=lie+1; } else if(lie==c&&hang!=1) { a[hang-1][1]=now; now++; tot++; hang=hang-1; lie=1; } else if((hang==1&&lie==c)||(a[hang-1][lie+1]!=0)) { a[hang+1][lie]=now; now++; tot++; hang=hang+1; } else { a[hang-1][lie+1]=now; now++; tot++; hang=hang-1; lie=lie+1; } } for(int i=1;i<=c;i++) { for(int j=1;j<=c;j++) { cout<<a[i][j]<<" "; } cout<<endl; } return 0; }
模拟。,,,,,,,,,,,
相关文章推荐
- 22:神奇的幻方
- 22:神奇的幻方
- 二维数组练习22_神奇的幻方
- OPENJUDGE 1.8 22:神奇的幻方
- 22:神奇的幻方/NOI / 1.8编程基础之多维数组
- 百练noi 22:神奇的幻方
- P2615 神奇的幻方(NOIP2015)
- 洛谷 P2615 神奇的幻方
- NOIP 2015普及组复赛Day1 T1 == Codevs4510 神奇的幻方
- 神奇的幻方(NOIP2015)
- openjudge 神奇的幻方
- 2015 NOIP day1 t1 神奇的幻方 模拟
- 神奇的幻方【够造奇数阶的魔方阵】
- NOIP 2015 提高组 Day1 T1 神奇的幻方
- Noip 2015 D1T1 神奇的幻方
- NOIP 2015普及组复赛Day1 T1 == Codevs4510 神奇的幻方
- 洛谷——P2615 神奇的幻方 【Noip2015 day1t1】
- noip2015day1 T1 4510 神奇的幻方
- ·蒟蒻」神奇的的幻方
- noip2015神奇的幻方