【发布时间】:2013-11-01 03:14:14
【问题描述】:
最近,我被要求设计一个函数,该函数将采用包含 1、0 和 ? 中任何一个的单个字符串(例如:“10?10?1”、“00???11”、“? ???”等)作为输入,并返回一个字符串列表,其中包含输入字符串的所有唯一的零排列。
对于“10?1?”的输入,答案将是包含“10010”、“10110”、“10011”和“10111”的列表。
我能够设计一个执行此操作的函数,但它本质上是蛮力的,我对复杂度为 O(2^n) 的更简洁的函数感兴趣。提供算法和/或实现将不胜感激,谢谢!
【问题讨论】:
-
如果您自己解决问题并describe what you've tried,我们更有可能为您提供帮助。查看 Stack Overflow question checklist 了解有关提出正确问题的更多信息。祝你好运,编码愉快!
-
尤其是家庭作业或类似的事情。
-
答案很简单。忽略固定的 1 和 0,只计算 ?s。对于 N ?字符,通过其所有可能性递增一个 N 位二进制数。例如,对于 3 ?s,递增 000、001、010、011、100、101、110 和 111。现在将这些位模式替换为 ?s。
标签: c++ algorithm big-o permutation time-complexity