爬楼梯
原创
©著作权归作者所有:来自51CTO博客作者小魏同学yyds的原创作品,请联系作者获取转载授权,否则将追究法律责任
爬楼梯
1.递推数组求解
#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;
}