一个貌似指数级的算法问题求更简单的算法# JobHunting - 待字闺中
i*y
1 楼
任意给定一个二进制数,比如10111,现在要打印出所有的非零位1的个数和等于k的二
进制数。
说得比较饶……
就比如给你10111,给定K=2,也就是说1的个数和只能等于2
那么就要输出:
10100, 10010, 10001, 00110, 00101, 00011,大概就是C(4,2)= 6这么多种组
合。
再比如给定10111,K=3
就要输出:
10110, 10101, 10011, 00111,一共C(4,3)= 4种.
我怎么想都觉得这个方法搞下去是指数级的(或者阶乘级的)复杂度,求简单的办法?
进制数。
说得比较饶……
就比如给你10111,给定K=2,也就是说1的个数和只能等于2
那么就要输出:
10100, 10010, 10001, 00110, 00101, 00011,大概就是C(4,2)= 6这么多种组
合。
再比如给定10111,K=3
就要输出:
10110, 10101, 10011, 00111,一共C(4,3)= 4种.
我怎么想都觉得这个方法搞下去是指数级的(或者阶乘级的)复杂度,求简单的办法?