zoukankan      html  css  js  c++  java
  • 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 }

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

  • 相关阅读:
    SG函数
    贪心:zoj3953 Intervals
    山东省第四届省赛 E-Mountain Subsequences
    山东省第四届ACM程序设计竞赛A题:Rescue The Princess
    前缀和:CodeForces 932B Recursive Queries
    常用头文件和一些简单的函数
    codeforce 429D. Tricky Function (思维暴力过)
    HDU-5754 Life Winner Bo (博弈论)
    线程池的原理与实现
    运行停止一个线程
  • 原文地址:https://www.cnblogs.com/zwfymqz/p/6497512.html
Copyright © 2011-2022 走看看