【发布时间】:2018-03-22 13:25:42
【问题描述】:
假设我有几个 N 位数,其中 K (1
示例:N = 3,K = 1(中间位固定为“0”)。那么可能的排列是
000
001
100
101
假设我有数字 X=000 和数组 fixed={-1,0,-1} 存储固定位的信息(-1 = 位不固定,0 或 1 = 固定)。
简单的解决方案是生成所有排列
000,001,...,111 并逐位循环并测试所有固定位是否具有正确的值(存储在fixed中)。如果至少有一个固定位与 fixed 中的对应值不同,则从结果中删除此排列。
然而,这是低效的,因为它需要 2^N 而不是 2^(N-K) 排列。是否有解决这个问题的算法或方法只需要 2^(N-K) 个排列(直接在结果中)?
【问题讨论】:
-
@GuyCoder 哦,该死的,我应该仔细阅读,谢谢。
标签: permutation bit asymptotic-complexity