hdu.2042 超级楼梯
这种递归来写,除了递归我也想不到怎么写了
AC代码:
#include<iostream>
using namespace std;
int x[41];//打表,不打表我不用想就知道过不了,再水也是ACM的题。
int resum(int n)
{
if(n==1)//第一个阶梯多少种方法
return 0;
if(n==2)//第二个阶梯多少种方法
return 1;
if(n==3)//第三个阶梯多少种方法
return 2;
if(x[n]>0)//查看表里有无数据
return x[n];
if(x[n]==0)//为0表示没有,就计算,然后赋值储存。
x[n]=resum(n-1)+resum(n-2);//第N步就等于他上一步怎么走方法总和
return x[n];
}
int main()
{
for(int i=0;i<41;i++)
x[i]=0;//置0
int n;
int m;
cin>>m;
while(m–)
{
cin>>n;
cout<<resum(n)<<endl;
}
return 0;
}
(PS:递归加打表,真香)