假期训练——OpenJ_Bailian - 4017 爬楼梯 动态规划

树老师爬楼梯,他可以每次走1级或者2级,输入楼梯的级数,求不同的走法数
例如:楼梯一共有3级,他可以每次都走一级,或者第一次走一级,第二次走两级
也可以第一次走两级,第二次走一级,一共3种方法。

Input输入包含若干行,每行包含一个正整数N,代表楼梯级数,1 <= N <= 30 Output不同的走法数,每一行输入对应一行输出 Sample Input
5
8
10
Sample Output
8
34
89


简单的一维dp,,    

dp[i] = dp[i-1]+dp[i-2];



#include  
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define rep(i,m,n) for(int i=m;i::iterator it=s.begin();it!=s.end();it++)
const int inf_int = 2e9;
const long long inf_ll = 2e18;
#define inf_add 0x3f3f3f3f

#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define pi acos(-1.0)
#define pii pair
#define Lson L, mid, rt<<1
#define Rson mid+1, R, rt<<1|1
const int maxn=5e2+10;
using namespace std;
typedef  vector vi ;
typedef  long long ll;
typedef  unsigned long long  ull; 
inline int read(){int ra,fh;char rx;rx=getchar(),ra=0,fh=1;
while((rx<'0'||rx>'9')&&rx!='-')rx=getchar();if(rx=='-')
fh=-1,rx=getchar();while(rx>='0'&&rx<='9')ra*=10,ra+=rx-48,
rx=getchar();return ra*fh;}
//#pragma comment(linker, "/STACK:102400000,102400000")
ll gcd(ll p,ll q){return q==0?p:gcd(q,p%q);}
ll qpow(ll p,ll q){ll f=1;while(q){if(q&1)f=f*p;p=p*p;q>>=1;}return f;}
#define MOD 100000007
int getnum(int x ,int y);

ll dp[100];
int n;
int main()
{
	ios::sync_with_stdio(false);
	dp[1]  = 1;
	for(int i=2;i<=33;i++)
	{
		dp[i] = dp[i-1]+dp[i-2];
	}
	
	while(cin >>n)
	{
		cout<



你可能感兴趣的:(ACM_动态规划)