2012-07-06 108 views
0

我需要一個動態矩陣發生器類將返回我一個int[4][4]矩陣,值應爲1和16之間就沒有重複的值。動態矩陣發生器

矩陣解決方案將不會停這樣的:

enter image description hereenter image description here

如果你仔細觀察矩陣圖像,然後你會發現每個矩陣在的位置的特定邏輯/模式矩陣的值。這種模式並不重要,但它是保持一個模式(,這意味着應該有任何類型的模式)的重要。目前我使用的靜態代碼,如:

// for the second image  
int temp4[][] = { { 1, 2, 3, 4 }, { 12, 13, 14, 5 }, 
         { 11, 16, 15, 6 }, { 10, 9, 8, 7 } }; 

目前,我有3/4的靜態模式,但靜態實施,這是一個不錯的辦法,所以應該是動態的,因爲我需要隨機模式運行。

所以我的問題是:是否有可能做出這樣的解決方案?代碼是什麼?如果您知道與此相關的鏈接,請將其發佈或張貼原始代碼。

在此先感謝。


UPDATE

什麼是模式裝置,這個問題?

如果你仔細按照第一矩陣,你會發現像第一行數:1,2,3,4那麼第2行:5,6,7,8等..

爲第二矩陣的第一行是1,2,3,4,然後它下降到5,6,7,然後返回爲8,9,10等等。

另一種模式可以是這樣的第1列:1,2,3,4那麼第二柱:5,6,7,8所以矩陣將看起來像:

4 8 12 16 ..等

因此我需要一個矩陣生成器,其將與不重複的值返回int[4][4]從1到16,值應該是有序的。另一種模式可能是這樣的:

enter image description hereenter image description here

與上述2的模式是這樣的:

enter image description here

+0

如果您發佈該模式,這將是一件好事。通過這兩個例子,社區無法猜測整個模式,只是做出一些可能不適合您需求的假設。 – 2012-07-06 14:58:44

+0

如果你想爲此編寫一個程序,你必須定義'模式'是什麼。要獲得任何沒有重複數字的隨機矩陣,請從有效矩陣開始,然後隨機交換一些數字。 – 2012-07-06 14:58:54

+0

讓我想想,在編輯我的文章之前,因爲可能它變得更難描述**模式** – 2012-07-06 15:06:29

回答

0

根據您的更新我會爲每一個模式的策略。在每種模式中,您可以選擇一個起點,一個方向,以及升序或降序(如果允許的話)

一旦您擁有了一組模式,您可以隨機選擇一個模式並對其進行隨機化,或者生成所有可能的模式並隨機選擇一個。


可以生成以隨機順序使用Collections.shuffle()非重複值

然後可以測試基質,看它是否具有足夠的圖案或是可接受的。如果沒有,重複,直到你做。

+0

我可以做到這一點,但問題是如何檢查模式?可能它是這個代碼中最難的部分。 – 2012-07-06 15:17:33

+0

最難的部分是定義什麼是模式。 – 2012-07-06 15:32:07

+0

請檢查更新 – 2012-07-06 15:44:18