1. 程式人生 > >用java語言編寫程式計算九宮圖

用java語言編寫程式計算九宮圖

前言

對於程式設計師來說,用程式解決數學問題是最有趣的事情之一。本人研究了一個能夠輕易計算九宮圖的演算法,並且用java語言編寫程式得以實現。現將演算法和程式碼公佈,歡迎廣大程式愛好者前來閱讀、交流。

九宮圖簡介

九宮圖是我國古老的數學問題,也是一種數字藝術,就是把1~9九個數字填到3行3列九個方格中,使其每一橫、堅、斜行之和都等於15。如下圖就是九宮圖:

在這裡插入圖片描述

程式設計思想

要計算九宮圖,我首先想到的是找數字規律。對於九宮圖而言,以每個邊角數字(如4)為首位,都能有3組不重複的數字組合的和為15。例如上圖中以4為開頭則有4、9、2,和4、3、8和 4、5、6三組數字之和為15。如果僅要求第一個數字是4,後兩個數字可以顛倒位置,則這樣的數字組合有6種。同理以中央數字為開頭,在後兩個數字可以顛倒位置的情況下,會有8個數字組合的和為15。利用這一規律,我們可以輕易得到九宮圖中的4個拐角數字和1箇中央數字,其他數字就可輕易計算出。

演算法

1、建立全域性的一個數組和一個int型變數分部用來儲存4個邊角數字和1箇中央數字。設定標記數字d=0;
2、利用三層for迴圈將第一、第二、第三個數字均從1開始累加,到9為止,中間巢狀if判斷語句保證三個數字不相等。
3、在for迴圈的最內層計算三個數字之和,如果等於15,則標記數字d自增1,表示已經找到一組和為15的數字組合。
4、在迴圈的最外層,也就是第一個數字不變,後面兩個數字取任意不重複值取完之後,利用if語句進行判斷,如果d的值自增到了6,則說明找到了邊角數字,存入陣列;如果d的值自增到了8,則說明得到了中央數字,需要賦值儲存。如果d的值自增到了4,說明此時是每一行中間的數字,但是這個數字我們不需要儲存。
5、每次d分別自增到4、6、8時,說明此時內部的兩層迴圈已經結束,第一個數字即將自增1再重新開始內部的兩層迴圈,此時需要將d的值重新歸0,以便計算不同的首位數字的到和為15的數字組合個數。
6、當得到4個邊角數字和1箇中央數字之和,再計算每一行中間的數字就特別簡單了,只需要用15減去兩個就行。
7、所有數字就得到以後,就可以展示出來。

程式程式碼

package InterestingProgram ;
public class JiuGongTu {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int d=0;
		int i=0;
		//建立int陣列,用來儲存4個邊角數字
		int[] corner=new int[4];
		//center用來儲存中央的數字
		int center = 0;
		for(int a=1;a<10;a++){			
			for(int b=1;b<10;b++){				
				if(a!=b){
					for(int c=1;c<10;c++){						
						if(a!=c&&b!=c){
							int x=a+b+c;
							if(x==15){
								d++;
							}													
						}					
					}					
				}					
			}
			if(d==6){
				System.out.println("得到邊角數字是"+a);
				corner[i]=a;
				i++;
				d=0;				
			}
			
			if(d==4){
				d=0;
			}
			if(d==8){
				System.out.println("得到中央數字是"+a);
				center=a;
				d=0;			
			}
			
		}
		//第一行中間的數字為
		int m1=15-corner[0]-corner[1];
		
		//最後一行中間的數字為
		int m2=15-corner[2]-corner[3];
		
		//左邊列中間的數字為
		int m3=15-corner[0]-corner[2];
		
		//左邊列中間的數字為
		int m4=15-corner[1]-corner[3];
		System.out.println("九宮圖如下:");
		System.out.println(corner[0]+"  "+m1+"  "+corner[1]);
		System.out.println(m3+"  "+center+"  "+m4);
		System.out.println(corner[2]+"  "+m2+"  "+corner[3]);

	}

}

執行效果

在這裡插入圖片描述