【发布时间】:2019-02-04 20:32:26
【问题描述】:
我正在尝试解决以下问题。给定一个整数 n,列出所有 n 位数字,使每个数字都没有重复数字。
例如,如果n为4,那么输出如下:
0123 0124 0125 ... 9875 9876 4位数字的总数是5040我目前的方法是蛮力。我可以生成所有 n 位数字,然后使用 Set 列出所有没有重复数字的数字。不过,我很确定有一种更快、更好、更优雅的方式来做到这一点。
我正在使用 Java 编程,但我可以阅读 C 源代码。
谢谢
【问题讨论】:
-
你能说出你到底在尝试什么蛮力方法吗?如果您包含生成组合例程(函数或方法)会更好
-
这看起来像一个简单的练习。这里的人太好了,无法为您提供解决方案。我建议你给出你的尝试(代码)并询问你卡在哪里,哪里出了问题,或者为什么效率不够等等......
-
@Nin 完全同意你的看法。但在解释问题之前,这些家伙已经给了她直截了当的答案。一个简单的谷歌搜索和 geeksforgeeks 也会这样做
-
@Maribell,我们可以避免前导零吗?
-
您可能需要澄清您是否想要所有数字最多 n 位或只需要 n 位。您在示例中使用了 0123,在您的 n=4 示例中为 n-1 位。这会将可接受的答案更改为 9*9*8*7... 之类的序列...
标签: java c algorithm combinations permutation