아름다운 배치:
1에서 num까지 num의 정수가 있다고 가정합니다. 아름다운 배치를 정의합니다. 이 배열의 i번째 위치(1 ≤ i ≤ N)에 대해 다음 중 하나가 참인 경우 이 숫자로 성공적으로 구성된 배열로 -
-
i번째 위치의 숫자는 i로 나눌 수 있습니다.
-
i는 i번째 위치의 숫자로 나눌 수 있습니다.
문제
우리는 숫자 num을 받아서 num에 대해 구성할 수 있는 아름다운 배열의 개수를 반환하는 JavaScript 함수를 작성해야 합니다.
예를 들어, 함수에 대한 입력이 -
인 경우const input = 2
그러면 출력은 다음과 같아야 합니다. -
const output = 2
출력 설명
첫 번째 아름다운 배열은 [1,2]:
두 번째로 아름다운 배열은 [2,1]:
예시
이에 대한 코드는 -
const num = 4; const countArrangements = (num = 1) => { let ans = 0 const recur = (curr, vis) => { if (curr === 1){ ans++; }else{ for (let i = num; i; i--) { let possible = (i % curr === 0 || curr % i === 0); let visited = vis & 1 << i; if (possible && !visited){ recur(curr-1, vis | 1 << i); } } } }; recur(num, 0); return ans; }; console.log(countArrangements(num));
코드 설명:
결과 변수(ans ) 그런 다음 재귀 함수를 만듭니다. 여러 분기 가능성을 탐색합니다. 이 재귀 함수에는 두 개의 인수만 필요합니다. 현재 배치하려는 숫자(curr)와 이미 방문한 지점(vis)입니다.
출력
콘솔의 출력은 -
8