2015-10-20 87 views
-4

我試圖用Java解決上述問題。想到使用for循環,但我不知道如何提前不知道X和N如何工作。我試圖用遞歸來解決它,但不知道它的外觀。現在已經嘗試了幾個小時。任何幫助是極大的讚賞。給定一個長度爲N的數組,其中數組中的每個元素都有X個可能性,返回所有可能的數組

實施例中,如果N = 4,並且x = 3,可能數組是:

[0,0,0,1] 
[2,1,0,0] 
[1,2,1,1] 
[0,2,2,2] 
+0

問題尋求幫助調試(「**爲什麼不是這個代碼工作?**」)必須包括所期望的行爲,一個_specific問題或錯誤,並在最短的代碼necessary_重現它**在問題本身**。沒有**明確問題陳述**的問題對其他讀者沒有用處。請參閱:[如何創建最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。 –

回答

0

首先,所有這些誰說「使用調試器」的,這不是關於代碼...它是關於理解。 他要求的方向,我會明白,如果你拒絕投票,因爲他沒有顯示他的代碼,那東西,你可以寫它...

我的算法像計數工作,你開始計算,直到X(basiclly比如在Base X中計數),當你到達X時,你在Array的下一個位置加1,並重置最後一個位置。

所以,據我所知,你不能以正常的方式返回少數數組,所以我假設你想打印它們。
現在,這是一個「好」代碼:
http://pastebin.com/Uqv3fMxg

幾點注意事項:
你不應該做的函數靜態的,我做到了從懶惰。
這並不完美,它會打印兩次[1,0],[2,0]等等。 couln't找不到問題,對我來說太晚了,我會嘗試再次檢查它明天。

我不是一個評論他的代碼的人,我做了一點,但我會解釋一切,我可以在這裏。

該程序開始在主要方法中,我定義了Array並開始了恢復方法。
停止聲明是當我進入N位置(不存在於陣列中,只有N-1)
參數:數組,我正在計數的陣列中的位置和「模式「,是跑到下一個位置還是隻打印這個位置的所有數字。

alreadyHas變量是不打印數字2次。
如果我不使用它,它會打印每個數字至少2次,它將重做他所做的所有工作,直到他移動到這個位置和每個位置。 這很難解釋,你可以寫0而不是它,看看會發生什麼。

所以,我數到X,每次我打印新的Array並計算每個數字,而不是滑動任何我必須重新計算最後一個位置的不同數字的最後一個位置。

在我已經計算了所有可能的數字在這個possition後,我給它的值爲0,並去到下一個位置。總結一下,你計算陣列第一個位置的數字,當你達到最大值時,你在下一個位置增加一個進位,並重新設置該位置。

對不起,如果有什麼不清楚,英語不是我的母語,所以我有一個困難的解釋我自己。
如果有什麼不清楚的地方,你可以問我任何問題,我會回答,這將是更容易解釋的方式。

晚安:)

相關問題