zoukankan      html  css  js  c++  java
  • 任意阶幻方..

      1 /*@coder Gxjun*/
      2 #include<stdio.h>
      3 #include<string.h>
      4 #include<stdlib.h>
      5 #define maxn 100
      6 int map[maxn][maxn] ;
      7 void creat_magic(int n,int x,int y ,int sn)   //奇阶幻方构造
      8 {
      9     int i,j,k;
     10     i=0;
     11     j=n/2;
     12     for(k=n;k<=n*n;k++)
     13     {
     14         map[i+x][j+y]=k+sn;
     15         if(k%n!=0)
     16         {
     17             if(i!=0)  i--;
     18             else      i=n-1;
     19             if(n==j+1) j=0;
     20             else      j++;
     21         }
     22         else
     23         {
     24             if(i==n-1)i=0;
     25             else    i++;
     26         }
     27     }
     28 }
     29 
     30 void  magic_4(int n)
     31 {
     32     int i,j;
     33     for(i=0 ; i<n ;i++)
     34     {
     35         for(j=0 ; j<n ;j++)
     36         {
     37             if((i%4==0||i%4==3)&&(j%4==0||j%4==3)||(i%4==1||i%4==2)&&(j%4==1||j%4==2))
     38             {
     39                 map[i][j]=n*n-(i*n+j);
     40             }
     41             else
     42             {
     43                 map[i][j]=i*n+j+1;   //i*n+j+n
     44             }
     45         }
     46     }
     47 }
     48 
     49 void magic_other(int n)
     50 {
     51     int i,j,t;
     52     creat_magic(n/2,0,0,0);
     53     creat_magic(n/2,n/2,n/2,n*n/4);
     54     creat_magic(n/2,0,n/2,n*n/2);
     55     creat_magic(n/2,n/2,0,n*n/4);
     56     for(i=0;i<n/2;i++)
     57     {
     58         for(j=0;j<n/4;j++)
     59         {
     60             if(i!=n/4||j!=0)
     61             {
     62                 /*<swap>*/
     63                 t=map[i][j];
     64                 map[i][j]=map[i+n/2][j];
     65                 map[i+n/2][j]=t;
     66             }
     67         }
     68     }
     69             t=map[n/4][n/4];
     70             map[n/4][n/4]=map[n/4+n/2][n/4];
     71             map[n/4+n/2][n/4]=t;
     72         for(i=0;i<n/2;i++)
     73         {
     74             for(j=n-n/4+1 ;j<n;j++)
     75             {
     76                 t=map[i][j];
     77                 map[i][j]=map[i+n/2][j];
     78                 map[i+n/2][j]=t;
     79             }
     80         }
     81 }
     82 int main()
     83 {
     84     int n,i,j;
     85     while(scanf("%d",&n)!=EOF)
     86     {
     87         memset(map,0,sizeof(map));
     88         if(n&1) creat_magic(n,0,0,0);
     89         else if(n%4==0)    magic_4(n);
     90         else magic_other(n);
     91         for(i=0;i<n;i++)
     92         {
     93             for(j=0;j<n;j++)
     94             {
     95                 printf("%d ",map[i][j]);
     96             }
     97             putchar(10);
     98         }
     99     }
    100     return 0;
    101 }
    View Code
  • 相关阅读:
    获得当前python解释器的路径
    AirtestIDE
    大数据到底有多大?TB、PB、EB到底是多少?
    时间的单位有
    windows10 彻底关闭自动更新
    Microsoft Windows10系统时间显示秒的方法
    host文件路径(Windows)
    Mina学习之IoHandler
    Mina学习之IoFilter
    Mina学习之IoSession
  • 原文地址:https://www.cnblogs.com/gongxijun/p/3579399.html
Copyright © 2011-2022 走看看