openjudge 数算练习 线性表 0217:神奇的幻方
2014-10-10 12:15
267 查看
总时间限制: 1000ms内存限制: 65535kB描述
幻方是一个很神奇的N*N矩离,它的每行、每列与对角线,加起来的数字都是相同的。
我们可以通过以下方法构建一个幻方。(阶数为奇数)
1.第一个数字写在第一行的中间
2.下一个数字,都写在上一个数字的右上方。
3.如果该数字在第一行,则下一个数字写在最后一行,列数为该数字的右一列
4.如果该数字在最后一列,则下一个数字写在第一列,行数为该数字的上一行
5.如果该数字在右上角,或者该数字的右上方已有数字,则下一个数字写在该数字的下方
输入一个数字N(N<=20)输出按上方法构造的2N-1 * 2N-1的幻方样例输入
样例输出
幻方是一个很神奇的N*N矩离,它的每行、每列与对角线,加起来的数字都是相同的。
我们可以通过以下方法构建一个幻方。(阶数为奇数)
1.第一个数字写在第一行的中间
2.下一个数字,都写在上一个数字的右上方。
3.如果该数字在第一行,则下一个数字写在最后一行,列数为该数字的右一列
4.如果该数字在最后一列,则下一个数字写在第一列,行数为该数字的上一行
5.如果该数字在右上角,或者该数字的右上方已有数字,则下一个数字写在该数字的下方
输入一个数字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 main() { int array[55][55]; for (int i = 0; i <= 54; i ++) for (int j = 0; j <= 54; j ++) { array[i][j] = 0; } int N; cin >> N; int x, y; int count = 1; int flag; x = 1; y = N; array[x][y] = 1; while (1) { if (count == (2 * N - 1) * (2 * N - 1)) break; if (x == 1 && y != 2 * N -1) { if (array[2 * N - 1][y + 1] == 0) { x = 2 * N - 1; y = y + 1; array[x][y] = ++count; continue; } else { x = x + 1; array[x][y] = ++count; continue; } } if (x != 1 && y == 2 * N -1) { if (array[x - 1][1] == 0) { x = x - 1; y = 1; array[x][y] = ++count; continue; } else { x = x + 1; array[x][y] = ++count; continue; } } if (x == 1 && y == 2 * N -1) { x = x + 1; array[x][y] = ++count; continue; } if (array[x - 1][y + 1] == 0) { x = x - 1; y = y + 1; array[x][y] = ++count; } else { x = x + 1; array[x][y] = ++count; } } for (int i = 1; i <= 2 * N -1; i ++) { flag = 0; for (int j = 1; j <= 2 * N - 1; j ++) { if (flag == 1) { cout << " "; } cout << array[i][j]; flag = 1; } cout << endl; } return 0; }
相关文章推荐
- openjudge 数算练习 线性表 0218:螺旋方阵的奥秘
- openjudge 计算概论-数组练习-错误侦测
- 二维数组练习22_神奇的幻方
- openjudge.1.8.22 神奇的幻方
- 神奇的动态规划---核电站(openjudge)
- 神奇的动态规划---酒鬼(openjudge)
- OpenJudge 2979 陪审团的人选 / Poj 1015 Jury Compromise
- acm-sdut-深度优先搜索练习之神奇的矩环
- openjudge 马走日
- OpenJudge/Poj 1088 滑雪
- OpenJudge_P1808 公共子序列(DP)
- 【NOIP2015】神奇的幻方
- openjudge城堡问题
- 编程练习平台 ACM PKU JudgeOnline
- 22:神奇的幻方
- OPEN(SAP) UI5 学习入门系列之二: 最佳实践练习(上)
- 神奇的幻方(NOIP2015)
- OPENJUDGE 4982 踩方格
- Openjudge NOI题库1.13编程基础之综合应用12:分数求和
- Openjudge NOI题库1.13编程基础之综合应用17:文字排版