IF-シーケンス


質問する



InputInputOutput[3,6,9]2[ [ 3, 6 ], [ 3, 9 ], [ 6, 3 ], [ 6, 9 ], [ 9, 3 ], [ 9, 6 ] ]

回答とレビュー

  • アルゴリズム問題でよく見られる並べ替え問題.
  • 各DFSは、tmpおよびtmpに加算可能なcheckの数字の組み合わせを出力する.
  • DFSの終了条件は깊이가 M과 같을 때であり、このときtmpアレイのコピーが出力される.
  • 終了条件を除いて、与えられた配列numbersのうち、check[i]が0である場合のみ、tmp[L]numbers[i]が割り当てられる.
  • の後に深さをDFSに増やし、check[i]を再び0に変更した場合、numbers iの1番目の要素は、検査配列のiインデックスが0の場合にのみtmpの要素になります.
  • DFSから終了し、check配列のiインデックスを再び0に変更します.
  • ちょっと変ですが、コードを見てもちょっと変です.
  • コード#コード#

    const solution = (numbers, M) => {
    	const answer = [];
    	const check = new Array(numbers.length);
    	check.fill(0);
    	const tmp = new Array(M);
    	tmp.fill(0);
    
    	const DFS = (L) => {
    		if (L === M) {
    			answer.push([...tmp]);
    		} else {
    			for (let i = 0; i < numbers.length; i++) {
    				if (check[i] === 0) {
    					check[i] = 1;
    					tmp[L] = numbers[i];
    					DFS(L + 1);
    					check[i] = 0;
    				}
    			}
    		}
    	};
    	DFS(0);
    	console.log(answer);
    };