1. 程式人生 > >java作業之數字魔方(N維數字魔方和數字旋轉魔方)

java作業之數字魔方(N維數字魔方和數字旋轉魔方)

N維數字魔方

原理: 定義一個奇數階二維陣列,把每個元素順序填入不同的自然數,要求行列和對角線元素相加的結果相等。

效果圖

實現程式碼:

import java.util.*;
public class MF{
    public static void main(String[] args) {
        Scanner input= new Scanner(System.in);
        System.out.println("請輸入奇數構造魔方:");
        int p=input.nextInt();
        if(p%2==0)
            System.out.println("請輸入奇數");//如果輸入的是非奇數則不再執行
        else {
            int n=p;
            int[][] a = new int[n][n];//構造二維陣列
            int hang,lei;//定義行和列
            hang=0;//要填充的初始行為第一行
            lei=n/2;//從中間一列開始填充
            for(int i=1;i<=n*n;i++)
            {
                a[hang][lei]=i;//第一行中間一個數填充為1
                hang--;
                lei++;//行減一行,列加一列,開始填充此格的右上方一格
                if(hang<0&&lei>=n) {//行和列同時越界
                    hang=hang+2;
                    lei--;//從前一個格的下方重新開始
                }
                if(hang<0)//行越界
                    hang=n-1;//從當前越界格的最下一列開始
                if(lei>=n)//列越界
                    lei=0;//從第一列重新開始
                if(a[hang][lei]!=0) {//此格已被填充
                    hang=hang+2;
                    lei--;//從前一格的下一格重新開始
                }
            }
            for(int[] i:a) {//輸出陣列
                for(int j:i) {
                    System.out.print(j+"\t");
                }
                System.out.println();
            }
        }
    }
}