我在其中,我都有一個編號,需要 發現在該號碼的位數每一種可能的排列問題的工作。例如,對於 示例,如果我給出20
,則答案將是:20
和02
。我知道 有n!
可能的排列,我已經劃分了 數字,以便每個數字是一個數組中的元素。我的問題是: 我如何遍歷這個數組生成每一個可能的組合 一個數字,是至少2位長,但沒有更多的 超過6生成所有獨特的排列
回答
說出n
個別數字的長度n
的陣列。然後生成排列的問題歸結爲:
- 選擇的
n
位數作爲第一個數字打印一張。 - 排列剩餘的
n-1
數字。
遞歸。
中的僞這樣一個遞歸函數permute
會是這樣的:
List permute (Array digits)
{
List permutations = /* initialize an empty list */
for (i=0; i<n; i++)
{
firstDigit = digit[i];
Array otherDigits = /* array containing all digits except firstDigit. */
List subPermutations = permute(otherDigits);
/* prepend firstDigit into each element of 'subPermutations' */
/* add all elements of 'subPermutations' to the list 'permutations' */
}
return permutations;
}
然後只需撥打permute
並打印出清單,或者其他任何與它。
編輯:您還需要處理的permute
邊緣荷蘭國際集團的情況下1位。
我認爲這已經是'家庭作業'的太多信息:)
你是什麼意思「把preDigit放到'subPermutations'的每個元素中?」我不明白這將如何得到每一個可能的排列。 – gmaster 2012-02-23 15:42:01
@gmaster - http://pastebin.com/5w7GE5iQ – ArjunShankar 2012-02-23 15:55:21
前置意味着在開始時添加。我沒有看到我如何在評論中解釋這一點,我認爲不值得將它放在答案中。因此請閱讀上面的pastepin網址(該網址設置爲1個月後過期) – ArjunShankar 2012-02-23 15:56:42
提示:
你會如何解決這個問題一位數字的問題?
現在,你會如何解決這個問題,因爲你必須回答前一個問題,對於一個2位數?
對於1位數字,您不必更改任何內容。我很抱歉,但我完全不知道你要做什麼。我認爲使用2 for循環,但是這不會產生每個可能的術語。 – gmaster 2012-02-23 15:22:33
@gmaster:這是你的作業,所以我只給予提示。拿一支鉛筆和紙。在上面寫上任何一個數字。現在想想包含第一位數字的2位數字。現在寫下第一個數字的副本,將第二個數字放在它旁邊,並且您有一個排列。現在,您還可以如何將第二個數字放在第一個旁邊作爲另一個排列?當你在紙上計算出你的方法變成代碼時。但是,直到你找到它,忘記你的過早的代碼。 – 2012-02-23 15:25:41
老實說,幫助作業,這是一個很好的和公平的提示:) – ArjunShankar 2012-02-23 15:57:51
- 1. 如何生成種子串的所有獨特的4字符排列?
- 2. 生成所有獨特的井字板的列表
- 3. 生成所有列表(排列)
- 4. 生成所有唯一的對排列
- 5. 生成所有排列在Java中
- 6. 創建所有具有獨特排列的二叉樹
- 7. 我有一個數字列表,如何生成所有獨特的K分區?
- 8. 生成所有長度的所有排列
- 9. 如何從所有排列生成所有可能的組合?
- 10. 生成一組(而不是冪)的所有「獨特的」子集
- 11. 是否有算法可以生成多重集的所有獨特圓形排列?
- 12. 生成列表中可能列表的列表和排列的所有排列?
- 13. 有效地找到獨特的排列
- 14. 獲得所有可能的獨特排列
- 15. 如何按排序順序生成數組的所有排列?
- 16. 生成一些數字範圍的所有排列序列
- 17. 以字典順序生成列表的所有排列
- 18. TestNG DataProvider - 如何生成列表中的所有排列
- 19. 如何生成時間序列的所有排列?
- 20. Python生成帶有獨特詞法元素的列表
- 21. 生成所有具有訂單約束的排列
- 22. 生成具有某種約束的所有排列
- 23. 獨特的2D陣列列排列
- 24. 獨特KEY生成算法
- 25. 基於標識符生成一個特定的排列排列
- 26. 生成所有字符串排列NP完成?
- 27. 排列生成
- 28. 生成排列
- 29. 生成排列
- 30. 通過從不產生排列和相反排列生成所有排列的一半?
如果數字是'22',該怎麼辦? – ArjunShankar 2012-02-23 15:18:19
對不起,我不太瞭解你的問題。如果你給一個數字20,那麼答案將是:20,022,220,200,000,...... 22,222.26000000? – hqt 2012-02-23 15:19:41
爲了澄清,我說我想生成一組數字的每個可能的組合。如果給定的數字是1234,我需要生成1234,1243,1432,4213等,直到生成了所有可能的組合。 – gmaster 2012-02-23 15:25:40