杭电2041

来源:互联网 发布:netstat安装 centos 编辑:程序博客网 时间:2024/06/05 15:54
#include <stdio.h>int upstairs(int n){int floors;if (n==1)//去一楼不走台阶{floors=0;}if (n==2)//去二楼走1个台阶{floors=1;}    else if (n==3){floors=2;}//去三楼走两个台阶else{floors=upstairs(n-1)+upstairs(n-2);}return floors;}

int main(){int n,m,floors;scanf("%d",&n);while(n--){scanf("%d",&m);floors=upstairs(m);printf("%d\n",floors);}}

用递归写竟然超时了!

用递推试一下!

#include <stdio.h>int dt(int n){int a[41]={0,1,2};for (int i=3;i<=n;i++){a[i]=a[i-1]+a[i-2];}return a[n];}int main(){    int n,m;scanf("%d",&n);while(n--){scanf("%d",&m);printf("%d\n",dt(m-1));}}

从这里可以发现能用其他的就不要用递归,超时很严重!



0 0