dp第二题

#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;
int dp[100050];
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        dp[0]=1;dp[1]=1;dp[2]=1;dp[3]=1;
        for(int i=4;i<=n;i++)
        {
            dp[i]=(dp[i-1]%10007+dp[i-3]%10007);
        }
        cout << dp[n]%10007 << endl;
    }
    return 0;
}

Zlgg想要爬天梯而求仙道,他只有两种登山步法:凌波微步和逍遥游,分别能使他一次登上一级台阶、三级台阶。
问:他从第一级台阶爬到第N级台阶共有多少种走法?

状态:dp[i]代表走到第i级有dp[i]种走法;

状态转移方程:dp[i]=dp[i-1]+dp[i-3];

原文地址:https://www.cnblogs.com/markliu/p/2496718.html