5 个开关相当于 5 个二进制位。
列出 5 个二进制位的所有排列情况。
类似:
0,0,0,0,0 ;
0,0,0,0,1 ;
0,0,0,1,0 ;
0,0,0,1,1 ;
0,0,1,0,0 ;
0,0,1,0,1 ;
······
5 个开关相当于 5 个二进制位。
列出 5 个二进制位的所有排列情况。
类似:
0,0,0,0,0 ;
0,0,0,0,1 ;
0,0,0,1,0 ;
0,0,0,1,1 ;
0,0,1,0,0 ;
0,0,1,0,1 ;
······
|
1
for i in range(2**5):
print bin(i) |
|
madaoApr 28, 2019
6
([1,0]*5).combination(5).to_a.uniq
🤤 |
|
7
非得使用所谓“算法”的说法,就是把它看成一个 n+1 层的二叉树,先序遍历一遍就好了
|
|
8
第 1 位为 (0, 1), 与 F(剩余的四位所有开关方式) 组合一下。
递归一下 |
|
inhzusApr 28, 2019 via Android
10
void printPermutation(int depth, string foo) {
if (depth > 5) return; else if (depth > 0) cout << foo << endl; printPermutation(depth + 1, foo + "1"); printPermutation(depth + 1, foo + "0"); } 手机上写的 将就看吧 |
|
dingyaguang117Apr 28, 2019
12
估计这题目是希望用 DFS
|
|
stevenshuangApr 28, 2019 via iPhone
13
cnt = 0
def aux(start, arr): if start == 5: global cnt cnt += 1 print arr else: for i in range(2): arr[start]= i aux(start+1, arr) def main(): arr=[0]*5 for i in range(2): arr[0]=i aux(1, arr) main() print cnt |
|
maggchApr 28, 2019
14
这也算算法吗...
|
|
behangaApr 28, 2019
15
11111 的全排列?
|
|
16
next_permutation,搞定
|
|
minamiApr 28, 2019
17
还可以 bitset
|
|
ezksdoApr 28, 2019
18
module Main where
import Numeric.Natural import Prelude hiding ( (^) ) (^) :: [Int] -> Natural -> [[Int]] a ^ n = f a n [[]] where f _ 0 s = s f a n s = f a (n - 1) ((:) <$> a <*> s) main :: IO () main = print ([0, 1] ^ 5) |
|
sosilverApr 29, 2019 via Android
19
function s(str, n) {
if (n == 0) return arr.push(str) s(str + "0", n - 1) s(str + "1", n - 1) } |
|
LxExExlApr 29, 2019 via iPhone
20
LC 有个 combination 系列 模板总结的非常好了
|
|
CbdyApr 29, 2019 via Android
21
11111B 种
|
|
iceheartApr 29, 2019 via Android
22
for (ini i = 0; i < 32; i++) {
printf("%d,%d,%d,%d,%d\n", i / 16, (i/8)&1, (i/4)&1, (i/2)&1, i&1); } |
|
24
楼上所有答案的作者都没有 @binux 对这个问题理解的深刻
|
|
JmmBiteApr 29, 2019
25
i=32;
while(i--){ console.log((i).toString(2)); } |
|
VariazioniApr 29, 2019
26
@binux #1 qiandao.today 的作者?膜拜大神。。
|
|
versionzhangApr 29, 2019 via Android
27
这个不是用高中排列组合的知识就搞定了么。 。2 的 n 次方,每个开关有两种情况,总共有 n 位
|
|
versionzhangApr 29, 2019 via Android
28
@versionzhang 列出来的话就是从 0 到 2 的 n 次方-1 的二进制表示。。
|