아름다운 배치:
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