DFSによる繰返しシーケンスの解析
6073 ワード
質問する
1からNと書かれたビーズがあります.M番号を繰り返し抽出して1列に列挙できるすべてのメソッドを出力します.
入力例
3 2
出力例
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3
9
に答える
ツリー構造
DFS(0)
/ ㅣ \
DFS(1) DFS(1) DFS(1)
/ ㅣ \ / ㅣ \ / ㅣ \
DFS(2) ... ...
/ ㅣ \
DFS(3) ... ...
function solution(n, m){
let answer=[];
let tmp=Array.from({length:m}, ()=>0);
function DFS(L){
// 탈출조건
if(L===m){ // for문으로 작성했다면 m중for문
//=>tmp를 바로 push하면 같은 주소값을 사용하므로 slice()를 사용해서 push함
answer.push(tmp.slice());
} else{
//1부터 n까지 반복
for(let i=1; i<=n; i++){
tmp[L]=i;
DFS(L+1);
}
}
}
DFS(0);
return answer;
}
console.log(solution(3, 2));
首都コード
Reference
この問題について(DFSによる繰返しシーケンスの解析), 我々は、より多くの情報をここで見つけました https://velog.io/@jungjaedev/DFS를-통해-중복순열-풀이テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol