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:递归加打表,真香)

Tags: