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