zoukankan      html  css  js  c++  java
  • ACM1998

    /*
        魔方阵,古代又称“纵横图”,是指组成元素为自然数1、2…n的平方的n×n的方阵,
        其中每个元素值都不相等,且每行、每列以及主、副对角线上各n个元素之和都相等。
        输入一个奇数,实现奇数魔方阵。
    
        附:奇数魔方阵的实现方法
                (1) 将1填入第一行中间;
              (2) 将每个数填在前一个数的右上方。
              (3) 若该位置超出最上行,则改填在最下行的对应位置;
              (4) 若该位置超出最右列,则该填在最左列的对应行位置;
              (5) 若某元素填在第一行最右列,下一个数填在该数同列的下一行;
              (6) 若某数已填好,但其右上角已填了其他数据,则下一个数填在该数同列的下一行位置。
    */
    
    #include <stdio.h>
    #include <math.h>
    
    int main(void)
    {
        int a[20][20],i,j,n,k,count;
    
        scanf("%d",&count);
        while(count--)
      {
        scanf("%d",&n);
        for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
        a[i][j]=0;
        j=n/2+1;
        a[1][j]=1;
        i=1;
    
        for(k=2;k<=n*n;k++)
        {
            i=i-1;
            j=j+1;
    
            if( i==0 && j==n+1 )
            {
                i=i+2;
                j=j-1;
            }
            else
            {
                if(i==0)
                {
                    i=n;
                }
                if(j==n+1)
                {
                    j=1;
                }
            }
    
            if(a[i][j]==0)
            {
                a[i][j]=k;
            }
            else
            {
                i=i+2;
                j=j-1;
                a[i][j]=k;
            }
        }
    
    
        for(i=1;i<=n;i++)
        {
            for(j=1;j<=n;j++)
                printf("%4d",a[i][j]);
            printf("
    ");
        }
      } 
        return 0;
    }
  • 相关阅读:
    开发中遇到的问题点
    ThreadLocal
    Java多线程10:join()方法
    Java多线程9:中断机制
    Java多线程8:wait()和notify()/notifyAll()
    Java多线程7:死锁
    Java多线程0:核心理论
    MySQL中and和or的优先级的问题
    Java多线程6:Synchronized锁代码块(this和任意对象)
    shiro英语
  • 原文地址:https://www.cnblogs.com/orangebook/p/3179392.html
Copyright © 2011-2022 走看看