我在其中,我都有一个编号,需要 发现在该号码的位数每一种可能的排列问题的工作。例如,对于 示例,如果我给出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. 生成所有独特的井字板的列表
- 2. 生成所有列表(排列)
- 3. 生成所有排列在Java中
- 4. 创建所有具有独特排列的二叉树
- 5. 我有一个数字列表,如何生成所有独特的K分区?
- 6. 生成所有长度的所有排列
- 7. 生成一组(而不是幂)的所有“独特的”子集
- 8. 是否有算法可以生成多重集的所有独特圆形排列?
- 9. 生成列表中可能列表的列表和排列的所有排列?
- 10. 算法生成所有排列的成对而不重复
- 11. TestNG DataProvider - 如何生成列表中的所有排列
- 12. 以字典顺序生成列表的所有排列
- 13. 如何生成时间序列的所有排列?
- 14. 生成具有某种约束的所有排列
- 15. 独特的2D阵列列排列
- 16. 基于标识符生成一个特定的排列排列
- 17. 生成所有字符串排列NP完成?
- 18. 排列生成
- 19. 生成列表的排列
- 20. 生成所有可能的排列在C
- 21. [Python]:生成和排列所有可能的组合
- 22. 生成对象矢量的所有可能排列
- 23. 生成处理器任务分配的所有排列?
- 24. 在Python中生成所有可能的排列组合
- 25. 如何在python中生成所有可能的排列?
- 26. 生成一副牌组的所有排列?
- 27. 获取所有值的排列 - 成对
- 28. 在SQL中,如何生成5!56的所有可能的独特组合?
- 29. Python生成所有独特的排列和没有排序的重复[固定,我的意思是寻找组合]
- 30. Ruby/Rails独特的名字生成器
如果数字是'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