繰り返しシーケンスを求める


作成日:2022年2月3日午後10:51

インプリメンテーションコード

# 중복순열 구하기
import sys
#sys.stdin = open("input.txt", "rt")

def DFS(index):
    global cnt
    if index == m:
        for x in res:
            print(x, end=' ')
        print()
        cnt += 1
        return
    else:
        for i in range(1,n+1):
            res[index] = i
            DFS(index+1)

    
if __name__ == "__main__":
    n, m = map(int, input().split())
    res = [0] * m
    cnt = 0
    DFS(0)
    print(cnt)
  • メートルの大きさのリスト(res)を発表した.(たとえば、mが2の場合、2つのセルのリストが生成され、各セルに重複シーケンスとして1つの数値が含まれる)
  • .
  • 再帰関数を迂回し、DFS関数のパラメータindexは、前に作成したサイズmのリストのインデックスに相当します.
  • 各インデックスのビット数はnになるため、for文を使用してresのスペースに1からnのビット数を入れ、再帰的に呼び出す.(n個のresが最初のセルにn個含まれている場合、数が生成され、DFSが呼び出されてn個のセルにn個の数を含むn個のresの数が生成される)
  • 入力パラメータ(index)がmの場合、基本となり、再帰を停止しresリストを出力し、cntを1増加する.
  • サマリ
    繰り返しシーケンスの場合、indexは数を含むresリストの観点から1を増やし、各セルにn個の数値を作成した場合、数値を作成し、次のインデックスに移動します.