回 帖 发 新 帖 刷新版面

主题:N阶螺旋幻方程序

/**
* N阶螺旋幻方程序
* 完成者:meteor135
* 完成日期:2003.9.9
* 编译环境:VC6.0
*/
#include <iostream.h>
#include <iomanip.h>
#include <math.h>

void showFangzhen(int n);

int main()
{
    //输出10组螺旋幻方
    for(int n = 0; n < 10; n ++)
        showFangzhen(n+1);
    
    cout<<"Press enter to quit!";
    cin.get();

    return 0;
}

void showFangzhen(int n)
{  

    int i,j,k,**array;
    
    //为指针分配动态内存
    array=new int*[n];
    for(i=0; i<n; i++)
    {
        array[i] = new int[n];
    }
    
    //初始化数组
    for(i=0,k=1; i<n/2; i++)
    {
        for(j=0;j<n-1-2*i;j++)
            array[j+i][n-i-1]        =    k++;
        for(j=0;j<n-1-2*i;j++)
            array[n-1-i][n-1-j-i]    =    k++;
        for(j=0;j<n-1-2*i;j++)
            array[n-j-1-i][i]        =    k++;
        for(j=0;j<n-1-2*i;j++)
            array[i][j+i]            =    k++;
    }
    if(n%2)
        array[n/2][n/2]              =    k;

    //输出n阶螺旋幻方
    cout<<n<<"阶螺旋幻方:"<<endl;
    for(i=0; i<n; i++)
    {    
        for(j=0;j<n;j++)
        {
            cout<<setw(int(log10(n*n))+2)<<array[i][j];
        }
        cout<<endl;
    }
    cout<<endl;
    
    //释放动态内存
    for(i=0; i<n; i++)
    {
        delete[] array[i];
    }
    delete[] array;
}
//这是输出结果:
/*
1阶螺旋幻方:
1

2阶螺旋幻方:
4 1
3 2

3阶螺旋幻方:
7 8 1
6 9 2
5 4 3

4阶螺旋幻方:
10 11 12  1
  9 16 13  2
  8 15 14  3
  7  6  5  4

5阶螺旋幻方:
13 14 15 16  1
12 23 24 17  2
11 22 25 18  3
10 21 20 19  4
  9  8  7  6  5

6阶螺旋幻方:
16 17 18 19 20  1
15 30 31 32 21  2
14 29 36 33 22  3
13 28 35 34 23  4
12 27 26 25 24  5
11 10  9  8  7  6

7阶螺旋幻方:
19 20 21 22 23 24  1
18 37 38 39 40 25  2
17 36 47 48 41 26  3
16 35 46 49 42 27  4
15 34 45 44 43 28  5
14 33 32 31 30 29  6
13 12 11 10  9  8  7

8阶螺旋幻方:
22 23 24 25 26 27 28  1
21 44 45 46 47 48 29  2
20 43 58 59 60 49 30  3
19 42 57 64 61 50 31  4
18 41 56 63 62 51 32  5
17 40 55 54 53 52 33  6
16 39 38 37 36 35 34  7
15 14 13 12 11 10  9  8

9阶螺旋幻方:
25 26 27 28 29 30 31 32  1
24 51 52 53 54 55 56 33  2
23 50 69 70 71 72 57 34  3
22 49 68 79 80 73 58 35  4
21 48 67 78 81 74 59 36  5
20 47 66 77 76 75 60 37  6
19 46 65 64 63 62 61 38  7
18 45 44 43 42 41 40 39  8
17 16 15 14 13 12 11 10  9

10阶螺旋幻方:
  28  29  30  31  32  33  34  35  36   1
  27  58  59  60  61  62  63  64  37   2
  26  57  80  81  82  83  84  65  38   3
  25  56  79  94  95  96  85  66  39   4
  24  55  78  93 100  97  86  67  40   5
  23  54  77  92  99  98  87  68  41   6
  22  53  76  91  90  89  88  69  42   7
  21  52  75  74  73  72  71  70  43   8
  20  51  50  49  48  47  46  45  44   9
  19  18  17  16  15  14  13  12  11  10

Press enter to quit!
*/

回复列表 (共2个回复)

沙发

果然是好厉害啊,多谢你的程序

板凳

so wonderful.wait for your help one day

我来回复

您尚未登录,请登录后再回复。点此登录或注册