[python]コンビネーション-itertoolsを実装するには、置換(繰り返しコンビネーション)を使用します.
繰り返しの組み合わせとは?
繰返し組合せとは、n個の繰返し可能項目からr個を選択した場合の数(順序なし)を意味する
n=2,k=3の場合,2+(3-1)C 3=4 C 3=4!=24です.
n=3,k=3の場合、5 C 3=10となる.
-> [0, 0, 0][0, 0, 1][0, 0, 2][0, 1, 1][0, 1, 2][0, 2, 2][1, 1, 1][1, 1, 2][1, 2, 2][2, 2, 2]
itertoolsを使用して繰り返し組み合わせる
from itertools import combinations_with_replacement
arr = [1,2,3]
for i in combinations_with_replacement(arr,3):
print(i, end=" ")
再帰的な重複組合せの使用
図はn=3,k=3である.
図に示すように、各レベルの始点はそれぞれ異なりますが、終点は同じです.(組み合わせとは異なる)
したがって,データの個数に応じて始点と終点を指定するだけでよい.
異なる始点から,組合せとは異なり,繰返し組合せは以前に選択した点から選択できることが分かった.
n, k = 3,3
A = ['귤', '감', '배']
arr = [0]*k
def combi(level, start):
#종료조건
if level >= k:
print(arr)
return
for i in range(start, len(A)):
arr[level] = A[i]
combi(level+1, i)
combi(0,0)
後記
組み合わせを実施する際には、理解が不明瞭であるため、理解が困難であり、組み合わせと繰り返しの組み合わせの違いを理解した上で、より容易に理解することができる.問題を把握することが一番大切らしい.
コードの表示👉 combination_with_repetition.py
いつでもフィードバックを歓迎します.💛
[コメントサイト]
https://www.youtube.com/watch?v=3r1vEOy3uCQ&list=PLnp1rUgG4UVYc77Ltm9Le6LtHc71jY390&index=16
Reference
この問題について([python]コンビネーション-itertoolsを実装するには、置換(繰り返しコンビネーション)を使用します.), 我々は、より多くの情報をここで見つけました https://velog.io/@skd/python-combinations-with-replacement중복조합-구현하기-itertools-recursionテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol