Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 계단 오르기 연습에 대한 역추적을 구현하는 방법은 무엇입니까?


n개의 계단이 있는 계단을 올라야 한다고 가정하고 계단을 뛰어올라 추가 운동을 하기로 결정했습니다.

한 번의 점프로 최대 k 단계를 수행할 수 있습니다. k는 계단의 계단 수에 관계없이 1 또는 2입니다.

계단을 오르기 위해 할 수 있는 가능한 모든 점프 시퀀스를 정렬하여 반환해야 합니다.

예를 들어 -

for n = 4 and k = 2,

출력은 -

여야 합니다.
climbingStaircase(n, k) = [[1, 1, 1, 1], [1, 1, 2], [1, 2, 1], [2, 1, 1], [2, 2]];

예시

이에 대한 코드는 -

const n = 4;
const climbStairs = (n) => {
   if (n == 0) return 0;
   let memory = new Map();
   let recur = (left) => {
      if (memory.has(left)) return memory.get(left);
      if (left <= 0) return 0;
      if (left == 1) return 1;
      if (left == 2) return 2;
      memory.set(left, recur(left − 2) + recur(left − 1));
      return memory.get(left);
   };
   return recur(n);
};
console.log(climbStairs(n));

출력

콘솔의 출력은 -

5