【发布时间】:2016-09-22 09:26:27
【问题描述】:
标题似乎是一个非常常见的问题,但请多多包涵。
基本上让我们在字符串的每个索引处说您知道哪些字母可能在该索引中,然后您想找到按字典顺序排列的最小排列。
例如:
Index | Options
-------|----------
1 | 'b'
2 | 'c', 'a'
3 | 'd', 'c'
4 | 'c', 'a'
因此,o/p 应该是badc。是的,顺便说一句,字符不能重复,所以没有贪心算法。
我认为我们可以通过创建队列或字符串的某些内容来使用某种广度优先搜索,并且每次我们发现我们无法创建另一个排列时,您将其从列表中弹出。怀疑这是最佳的,但一定是O(N) 中的东西。有什么想法吗?
不,我不认为 C 语言不好,但我更喜欢 C/C++ 中的代码 sn-ps :p
谢谢!
【问题讨论】:
-
要么应该是“bacd”,要么我还不明白这个问题。
-
字符串的最大长度是多少?
-
badc的输出怎么样,能解释一下吗? -
@sudomakeinstall2,因为字符不能重复,长度必须是
-
@MuhammadAhmad 如果索引 3 选择“c”,则索引 4 不能选择“c”,也不能选择“a”,这让你别无选择,只能选择'd' 表示索引 3。
标签: c++ algorithm permutation breadth-first-search