Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 1, 2 또는 3단계를 사용하여 n번째 계단에 도달하는 방법 계산

<시간/>

계단의 총 계단 수는 n입니다. 사람은 한 번에 1, 2 또는 3단계를 건너뛰어 다음 층에 도달할 수 있습니다. 목표는 그렇게 함으로써 다음 층에 도달할 수 있는 방법의 수를 찾는 것입니다.

i번째 단계에 도달하려면 i-1번째 단계( 1단계 건너뛰기), i-2번째 단계(2단계 건너뛰기) 또는 i-3번째 단계( 3단계 건너뛰기 ).

예를 들어 이해합시다.

입력

N=3 steps

출력

Count of ways to reach the nth stair using step 1, 2 or 3 are: 4

설명

There are total 3 steps
Jump from start ( skip 3 ) : 3 step
Jump from 1’st step (skip 2): 1+2
Jump from 2nd step (skip 1): 2+1
No skip 1+1+1

입력

N=6 steps

출력

Count of ways to reach the nth stair using step 1, 2 or 3 are: 24

설명

There are total 6 steps
Ways: 1+1+1+1+1+1, 2+1+1+1+1, 3+1+1+1, 3+1+2, 3+2+1, 3+3 and so on.

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

  • 총 단계 수로 정수 단계를 사용하고 있습니다.

  • 계단식 단계(int 단계) 함수는 모든 단계를 입력으로 사용하고 점프를 하든 하지 않든 다음 층에 도달하는 여러 가지 방법을 반환합니다.

  • 이러한 방식으로 초기 변수 개수를 0으로 간주합니다.

  • 숫자가 0이면 1을 반환합니다.

  • 걸음 수가 1인 경우 편도입니다.

  • 걸음 수가 2인 경우 2가지 방법(1+1 또는 2)입니다.

  • 그렇지 않으면 =계단_단계(단계-3)+계단_단계(단계-2)+단계_단계(단계-1).

(재귀적 방법)

예시

#include <iostream>
using namespace std;
int stairs_step(int steps){
   if(steps == 0){
      return 1;
   }
   else if(steps == 1){
      return 1;
   }
   else if (steps == 2){
      return 2;
   }
   else{
      return stairs_step(steps - 3) + stairs_step(steps - 2) + stairs_step(steps - 1);
   }
}
int main(){
   int steps = 5;
   cout<<"Count of ways to reach the nth stair using step 1, 2 or 3 are: "<<stairs_step(steps);
   return 0;
}

출력

위의 코드를 실행하면 다음 출력이 생성됩니다 -

Count of ways to reach the nth stair using step 1, 2 or 3 are: 13