魔方陣

博巖。發表於2020-11-07

#include <stdio.h>
#include<iostream>
using namespace std;
 
int main()
{
    int N;
    int a[15][15];
    cin>>N;
    int i;
    int col,row;                //col代表列,row代表行
    col = (N-1)/2;
    row = 0;                
 
    a[row][col] = 1;                //這裡是說明數字1位於方陣中的第一行中間一列;
 
    for(i = 2; i <= N*N; i++)        //在二維陣列中填入2到n的數
    {
        if((i-1)%N == 0 )            //如果這個數是陣列階數的倍數
        {
            row++;                    //行數加一,列數不變
        }
        else                        //這個數不是陣列階數的倍數
        {
                                                    // 行數減一,當行數為第一行時候,下一個數的行數為n
            row--;
            row = (row+N)%N;
 
                                                    // 列數加一,如果列數已經為最後一行,下一個數列數為1
            col ++;
            col %= N;
        }
        a[row][col] = i;                            //將陣列相應的位置填數
    }
    for(row = 0;row<N;row++)                        //輸出二維陣列
    {
        for(col = 0;col < N; col ++)
        {
            cout<<a[row][col]<<'\t';
        }
        cout<<endl;
    }
    return 0;
}

相關文章