zoukankan      html  css  js  c++  java
  • 魔方阵算法

    输出"魔方阵"。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为
          8 1 6
          3 5 7
          4 9 2
    要求输出1~n*n的自然数构成的魔方阵。
    解:魔方阵中各数的排列规律如下:
    (1)将1放在第1行的中间一列。
    (2)从2开始直到n×n止各数依次按下列规则存放:每一个数存放的行比前一个数的行数减1,列数加1(例如上面的三阶魔方阵,5在4的上一行后一列).
    (3)如果上一数的行数为1,则下一个数的行数为n(指最下一行)。例如,1在第一行,则2应放在最下一行,列数同样加1. 
    (4)当上一个数的列数为n时,下一个数的列数应为1,行数减1.例如,2在第3行最后一列,则3应放在第2行第1列。
    (5)如果按上面规则确定的位置上已有数,或上一个数是第一行第n列时,则把下一个数放在上一个数的下面。例如,按上面的规定,4应该放在第1行第2列,但该位置已经被1占据,
    所以4就放在3的下面。7应该放在第3行第1列,但该位置已经被4占据,故7放在6下面。
    按此方法可以得到任何阶的魔方阵。

    注意:魔方阵的阶数应奇数,程序指定其最大值为15。今定义数组a为16行16列,对第0行0列不用来存放数据,只用第1~15行,使读者看程序时比较符合习惯。

     

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #define SIZE 50;
     4 main()
     5 {
     6     int row, col, n, value;
     7     int a[SIZE+1][SIZE+1];              
     8     printf("请输入要输出魔方阵的阶数n(奇数, <%d):n=",SIZE);
     9     scanf("%d",&n);
    10     if(!(n%2)||n<1||n==0) 
    11     {
    12         printf("输入有误!\n");
    13         exit(0);
    14     }
    15 row = 1; col = (n+1)/2; value = 1;
    16     while(value<=n*n) 
    17     {
    18         a[row][col] = value;
    19         if(value%n!=0)
    20         {
    21             row--;
    22             col++; 
    23             if(row<1)
    24                 row=3;
    25             if(col>n)
    26                 col=1; 
    27         }
    28         else
    29             row++;
    30         value=value+1; 
    31     }
    32     printf("\n%d 阶魔方阵如下所示:\n\n",n);
    33     for(row = 1; row <= n; row++)
    34     {
    35         for(col = 1; col <= n; col++)
    36         printf("%5d",a[row][col]);
    37         printf("\n");
    38     }
    39 }
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
  • 相关阅读:
    注册tomcat为服务
    BootStrap
    Passive DNS
    一个插件平台
    HDU 4394 BFS
    设计模式--组合模式--商品排序案例
    Windows平台编译openssl-0.9.8k库(32位、64位)
    JavaScript之this释疑
    OpenLayers3基础教程——OL3 介绍control
    我的Android进阶之旅------&gt; Android为TextView组件中显示的文本加入背景色
  • 原文地址:https://www.cnblogs.com/wspaceworld/p/2492635.html
Copyright © 2011-2022 走看看