組み合わせのアルゴリズムについて
下記の問題をライブラリ(itertoolsなど)を使用しない解き方を教えていただきたいです。
入力をnとした時に、0,1,2,…,n−1 までの数について、全ての並べ方を1行ごとに出力するプログラム
入力:
3
出力:
0 1 2
0 2 1
1 0 2
1 2 0
2 0 1
2 1 0
ライブラリを使用しないと解けないのでぜひアルゴリズムを教えてほしいです。
0
下記の問題をライブラリ(itertoolsなど)を使用しない解き方を教えていただきたいです。
入力:
3
出力:
0 1 2
0 2 1
1 0 2
1 2 0
2 0 1
2 1 0
ライブラリを使用しないと解けないのでぜひアルゴリズムを教えてほしいです。
itertools.product()
のページに書いてありますよ
https://docs.python.org/ja/3/library/itertools.html#itertools.product
@dthy
Questioner
細かいチューニング部分はあるけど、
以下で動きました。
def permutations_rec(cands):
if len(cands) == 1:
return [cands]
ret = []
for cand in cands:
remain = [c for c in cands if c != cand]
for perm in permutations_rec(remain):
ret.append([cand] + perm)
return ret
def permutations(n):
return permutations_rec(list(range(n)))
if __name__ == '__main__':
for perm in permutations(3):
print(*perm)