2012-03-09 79 views
0

我目前正在爲學校的Android的15益智遊戲。可悲的是我遇到了一個問題。麻煩在Java中的方程

我需要重寫這個公式從它而不是索引獲取一個行和列。看看代碼,如果你們可以幫助我!

這需要一個行和一列,並返回一個相應的索引。

int index = 4 * (row - 1) + (column - 1); 

但是,現在我想將索引變成一個行和一列。 所以沒有人知道如何排除這個等式,將一行和一列返回到兩個不同的整數。

感謝, 的Mikael

回答

5

試試這個:

row = index/4 + 1; 
column = (index % 4) + 1; 

注意,這(和原來的公式)只有工作,如果column < 5(這是當然的,對於一個15拼圖)。

+0

確保你只能得到索引/ 4和指數4%,這是地板的整數部分。 – 2012-03-09 08:31:26

+0

@EuclidesMulémbwè - 在Java中,'index/4'是整數除法並自動發言。另外,因爲'index'是一個'int','index%4'已經是一個'int'。 – 2012-03-09 08:35:32

+0

謝謝你!這就是訣竅! :) – user1258829 2012-03-09 08:43:08

0

看看這個頁面System of linear equations。在你的情況下,你有兩個未知的變量(行和列)和只有一個方程,所以你可能有多個解決方案(值的幾個)的行和列。請注意,在你的情況下,你也有關於行和列的值的約束,因爲這些是數組索引。

+1

對於15個難題,有4行和4列。所以他有一個額外的約束 – 2012-03-09 08:30:59

+0

在感興趣的領域(格點[1,4] x [1,4]),只有一個解決方案。您參考的文章中的材料不適合解決此類問題。 – 2012-03-09 08:34:18

1

嘗試繪製出一個數組,看看你是否可以找出模式。當你向下移動一個單元格時,觀察索引的作用,或者向右移動一下。

請注意,下圖中的索引是基於1的,但對於java數組,您需要基於0的索引。

indices of a 2d array

+0

15個謎題使用4 x 4的運動場。 – 2012-03-09 08:36:44

+0

+1用於解釋問題的一般解決方案 – 2012-03-09 08:42:10