22:神奇的幻方

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
 1 #include<iostream>
 2 using namespace std;
 3 int a[1001][1001];
 4 int now=1;
 5 int tot=0;
 6 int hang,lie;
 7 int main() 
 8 {
 9     int n;
10     cin>>n;
11     int c=2*n-1;
12     while(tot!=(c*c))
13     {
14         if(tot==0)
15         {
16             a[1][c/2+1]=now;
17             now++;
18             hang=1;
19             lie=c/2+1;
20             tot++;
21         }
22         else if(hang==1&&lie!=c)
23         {
24             a[c][lie+1]=now;
25             now++;
26             tot++;
27             hang=c;
28             lie=lie+1;
29         }
30         else if(lie==c&&hang!=1)
31         {
32             a[hang-1][1]=now;
33             now++;
34             tot++;
35             hang=hang-1;
36             lie=1;
37         }
38         else if((hang==1&&lie==c)||(a[hang-1][lie+1]!=0))
39         {
40             a[hang+1][lie]=now;
41             now++;
42             tot++;
43             hang=hang+1;
44         }
45         else 
46         {
47             a[hang-1][lie+1]=now;
48             now++;
49             tot++;
50             hang=hang-1;
51             lie=lie+1;
52         }
53     }
54     for(int i=1;i<=c;i++)
55     {
56         for(int j=1;j<=c;j++)
57         {
58             cout<<a[i][j]<<" ";
59         }
60         cout<<endl;
61     }
62     return 0;
63 }

模拟。,,,,,,,,,,,

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • noi 1.8 11图像旋转

    水题不解释 其实我偷懒了 直接输出,,,,,,, #include<iostream> using namespace std; int a[1001][100...

    attack
  • noi 1.8 11图像旋转

    个人QQ:757394026 团队QQ:466373640 个人博客:www.doubleq.win c++/noi/信息学奥数博客:http://www.cn...

    attack
  • BZOJ2783: [JLOI2012]树(树上前缀和+set)

    Description 数列 提交文件:sequence.pas/c/cpp 输入文件:sequence.in 输出文件:sequence.out 问题描述:...

    attack
  • Java数据结构与算法(4) -冒泡排序

    用户2032165
  • 【蓝桥杯】ADV-170 数字黑洞

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    喜欢ctrl的cxk
  • 从测试策略到测试架构|TW洞见

    今年是我做软件测试的第7个年头了,当年我从软件开发转做软件测试的时候,没有想过我能在这个领域做这么久。 在这7年里面,我在软件测试领域摸爬滚打,从自动测试起步,...

    ThoughtWorks
  • Python自动化之unittest框架

    在软件架构的层面来讲,测试最重要的步骤之一是发生在软件开发的时候。而软件最终的功能是软件实现细节实现的产物。在金字塔模型的测试理论体系中,单元测试是最...

    无涯WuYa
  • 一道简单的数组遍历题,加上四个条件后感觉无从下手

    给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个...

    五分钟学算法
  • 常见排序算法分析

    一.常见排序算法的实现 1.冒泡排序 冒泡排序是非常容易理解和实现,,以从小到大排序举例: 设数组长度为N。 1.比较相邻的前后二个数据,如果前面数据大于后面...

    猿人谷
  • [每日一题]C语言程序设计教程(第三版)课后习题5.7

    题目描述 给出一个不多于5位的整数,要求 1、求出它是几位数 2、分别输出每一位数字 3、按逆序输出各位数字,例如原数为321,应输出123 输入 一个不大于5...

    编程范 源代码公司

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动