這種遞迴來寫,除了遞迴我也想不到怎麼寫了
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:遞迴加打表,真香)