zoukankan      html  css  js  c++  java
  • SDUST 作业10 Problem D 魔方阵

    Description

    所谓N阶魔方阵,是一个N*N的方阵,其元素由1到N^2组成,且方阵每行每列以及对角线的元素和相等。如三阶魔方阵:
    8 1 6
    3 5 7
    4 9 2
     
     
    魔方阵的规律如下:
       从1~N*N的 各个数依次如下规则存放:
          (1) 1在第一行中间一列;
          (2) 每一个数存放的行比前一个数的行数减一,列数加一(如上的三阶方阵5在4的上一行,后一列);
          (3) 如果上一个数在第一行,则下一个数在最后一行,列数加一;
          (4) 如果上一个数在最后一列,则下一个数在第一列,行数减一;
          (5) 如果按上述规则确定的位置已经有数,或上一个数在第一行第N列,则下一个数放在上一个数的正下方。

    Input

    输入包含多组数据,每组为一个小于100的正奇数。

    Output

    对于每个输入的N,输出N阶魔方阵;两组数据之间用一个空行分隔。方阵中每行每两个数之间有一个空格,行首和行末没有多余的空格。

    Sample Input

    3

    Sample Output

    8 1 6
    3 5 7
    4 9 2

    HINT

     

    Append Code

    这道题需要注意的地方是边界处理,采用的技巧有取余和边测边写

     1 #include <stdio.h>
     2 #include <string.h>
     3 int a[105][105];
     4 int main(){
     5     int n;
     6     int k=0;
     7     while(scanf("%d",&n)!=EOF){
     8         if(!k)k=1;else printf("
    ");
     9         memset(a,0,sizeof(a));
    10         a[0][n/2]=1;
    11         int r=0,c=n/2;
    12         int r0=0,c0=n/2;
    13         for(int i=2;i<=n*n;i++){
    14             r=((r+n)-1)%n;
    15             c=((c+n)+1)%n;
    16             if(a[r][c]||(r0==0&&c0==n-1)){
    17                 a[r0+1][c0]=i;
    18                 r=r0+1;c=c0;
    19             }
    20             else{
    21                 a[r][c]=i;
    22             }
    23             r0=r;c0=c;
    24         }
    25         for(int i=0;i<n;i++){
    26             for(int j=0;j<n-1;j++){
    27                 printf("%d ",a[i][j]);
    28             }
    29             if(n)printf("%d",a[i][n-1]);
    30             printf("
    ");
    31         }
    32     }
    33     return 0;
    34 }
  • 相关阅读:
    针式PKM使用经验一:日期视图
    针式PKM使用经验二:分类的显示顺序
    pythonunittest(6)
    pythonunittest(9)
    pythonunittest(10)
    wxpython学习笔记(1)
    利用正则表达式进行修改自定义ini配置文件
    pythonunittest(7)
    使用loadrunner进行服务器性能测试(winsocket)
    pythonunittest(8)
  • 原文地址:https://www.cnblogs.com/Wade-/p/6159283.html
Copyright © 2011-2022 走看看