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
binux 2019 年 4 月 28 日 for i in range(2**5):
print bin(i) |
6
madao 2019 年 4 月 28 日
([1,0]*5).combination(5).to_a.uniq
🤤 |
7
SorcererXW 2019 年 4 月 28 日 非得使用所谓“算法”的说法,就是把它看成一个 n+1 层的二叉树,先序遍历一遍就好了
|
8
holmesabc 2019 年 4 月 28 日 第 1 位为 (0, 1), 与 F(剩余的四位所有开关方式) 组合一下。
递归一下 |
10
inhzus 2019 年 4 月 28 日 via Android
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"); } 手机上写的 将就看吧 |
12
dingyaguang117 2019 年 4 月 28 日
估计这题目是希望用 DFS
|
13
stevenshuang 2019 年 4 月 28 日 via iPhone
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 |
14
maggch 2019 年 4 月 28 日
这也算算法吗...
|
15
behanga 2019 年 4 月 28 日
11111 的全排列?
|
16
minami 2019 年 4 月 28 日 next_permutation,搞定
|
17
minami 2019 年 4 月 28 日
还可以 bitset
|
18
ezksdo 2019 年 4 月 28 日
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) |
19
sosilver 2019 年 4 月 29 日 via Android
function s(str, n) {
if (n == 0) return arr.push(str) s(str + "0", n - 1) s(str + "1", n - 1) } |
20
LxExExl 2019 年 4 月 29 日 via iPhone
LC 有个 combination 系列 模板总结的非常好了
|
21
Cbdy 2019 年 4 月 29 日 via Android
11111B 种
|
22
iceheart 2019 年 4 月 29 日 via Android
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
F281M6Dh8DXpD1g2 2019 年 4 月 29 日 via iPhone 楼上所有答案的作者都没有 @binux 对这个问题理解的深刻
|
25
JmmBite 2019 年 4 月 29 日
i=32;
while(i--){ console.log((i).toString(2)); } |
26
Variazioni 2019 年 4 月 29 日
@binux #1 qiandao.today 的作者?膜拜大神。。
|
27
versionzhang 2019 年 4 月 29 日 via Android
这个不是用高中排列组合的知识就搞定了么。 。2 的 n 次方,每个开关有两种情况,总共有 n 位
|
28
versionzhang 2019 年 4 月 29 日 via Android
@versionzhang 列出来的话就是从 0 到 2 的 n 次方-1 的二进制表示。。
|