n개의 계단이 있습니다. 한 사람은 1층에서 n층으로 갈 것입니다. 한 걸음에 얼마나 많은 계단을 넘을 수 있는지도 나와 있습니다. 이 정보를 가지고 n'번 계단으로 갈 수 있는 방법을 찾아야 합니다.
각 단계에서 최대 두 개의 계단을 건널 수 있다고 가정해 보겠습니다. 따라서 이 문제를 해결하기 위해 재귀 관계를 찾을 수 있습니다. (n-1)'계단이나 (n-2)'계단에서 n'계단으로 이동할 수 있습니다. 그래서 way(n) =way(n-1) + way(n-2).
입력 및 출력
입력:계단 수, 예를 들어 10개 한 단계에 점프할 수 있는 최대 계단 수, 예를 들면 2출력:계단 수 입력:10사람이 올라갈 수 있는 최대 계단 입력:2도달 방법 수:89사전>알고리즘
stairClimpWays(계단, 최대)입력 - 계단 수, 한 단계에서 최대 계단 점프.
출력 - 도달할 수 있는 방법의 수.
계단 번호와 동일한 크기의 배열 개수 정의를 시작합니다. count[0] :=1 count[0] :=1 for i :=2 to 계단 -1, do count[i] :=0 for j =1 to i 및 j <=최대; do count[i] :=count[i] + count[i - j] 완료 완료 return count[stair - 1]End예시
#include네임스페이스 사용 std;int StairClimbWays(int Stair, int max) { int count[stair]; // 상향식 방식을 사용하여 결과 계단 채우기 count[0] =1; //계단이 0개 또는 1개일 때 1개 올라가는 방법 count[1] =1; for (int i=2; i > 계단; cout <<"사람이 올라갈 수 있는 최대 계단을 입력하세요:"; 신>> 최대; cout <<"도착 방법의 수:" < 출력
계단 수 입력:10사람이 올라갈 수 있는 최대 계단 입력:2도달 방법:89