爬楼梯

爬楼梯_c++
爬楼梯_#include_02

1.递推数组求解

爬楼梯_技术_03

#include <stdio.h>
#include <string.h>
int step[50];
int main() {
    memset(step,0,sizeof(step));
    step[2]=step[3]=1;
    step[0]=step[1]=0;
    int N;
    scanf("%d",&N);
    for(int i=4;i<=N;i++)
        step[i]=step[i-2]+step[i-3];
    printf("%d\n",step[N]);
    return 0;
}
2.暴力解法(深度搜索)
#include <stdio.h>
int f(int n,int* cnt) {//注意这里必须传cnt的指针或者引用
    if(n==0)
        return ++*cnt;
    if(n==1) 
        return 0;
    if(n<0)
        return 0;
    for(int i=2;i<=3;i++)
        f(n-i,cnt);
    return *cnt;
}
int main() {
    int N,cnt=0;
    scanf("%d",&N);
    printf("%d\n",f(N,&cnt));
    return 0;
}