• HDU1998奇数阶魔方 一个好玩的程序 按规则写蛮简单的


     1 /*
    2 N 为奇数时
    3   (1) 将1放在第一行中间一列;
    4
    5
    6   (2) 从2开始直到n×n止各数依次按下列规则存放:
    7
    8
    9   按 45°方向行走,如向右上
    10
    11
    12   每一个数存放的行比前一个数的行数减1,列数加1
    13
    14
    15   (3) 如果行列范围超出矩阵范围,则回绕。
    16
    17
    18   例如1在第1行,则2应放在最下一行,列数同样加1;
    19
    20
    21   (4) 如果按上面规则确定的位置上已有数,或上一个数是第1行第n列时,
    22
    23
    24   则把下一个数放在上一个数的下面。
    25
    26 */
    27 #include<stdio.h>
    28 int main()
    29 {
    30 int n,i, j,x,t ;
    31 scanf("%d", &t);
    32 while(t--)
    33 {
    34 scanf("%d", &n);
    35 int a[100][100] = {0};
    36 x = 1;
    37 a[1][n/2+1] = 1;
    38 i = 1;
    39 j = n/2+1;
    40 while(x<n*n)
    41 {
    42 if(i-1 == 0&&j!=n)
    43 {
    44 i = n;
    45 j++;
    46 a[i][j] = ++x;
    47 }
    48 else
    49 if(j+1>n&&i!=1)
    50 {
    51 i--;
    52 j = 1;
    53 a[i][j] = ++x;
    54 }
    55 else
    56 if(a[i-1][j+1]!=0||(i == 1&&j == n))
    57 {
    58 i++;
    59 a[i][j] = ++x;
    60 }
    61 else
    62 {
    63 i--;
    64 j++;
    65 a[i][j] = ++x;
    66 }
    67 }
    68 for(i = 1; i <= n ; i++)
    69 for(j = 1 ; j <= n ; j++)
    70 {
    71 printf("%4d",a[i][j]);
    72 if(j == n)
    73 printf("\n");
    74 }
    75 }
    76
    77 return 0;
    78 }
  • 相关阅读:
    Asp.Net MVC<一> : 三层架构、MVC
    To IOC,代码结构演变的随想
    .net网站的文件上传读取进度条和断点下载
    NPOI导入,导出
    瀑布流,纵向
    主键、外键、索引
    java基础语法要点<二>(基于1.8)
    android 概述 及四大组件
    Android Studio
    C#查看各种变量的指针地址
  • 原文地址:https://www.cnblogs.com/shangyu/p/2348080.html
Copyright © 2020-2023  润新知