题目:假设有n阶台阶,小米从第一个台阶要走动目的台阶,每次可以跨越奇数个台阶,问有多少种走法?动态规划的三部曲:第一个就是确定变量含义,第二个就是确定状态转化方程,第三个就是确定边界条件,最后来考虑最优解,空间复杂度和时间复杂度问题。
#include<iostream>
#using namespace std;
int main()
{
const int mod=100007;
dp[1001];
int n;
cin>>n;
dp[0]=1;
for (int i=1;i<=n;i++)//这是确定要到第几个台阶的
{
dp[i]=0;每设置不同的台阶时,然后寻求方法的时候,都要进行归零初始化
for (int j=i-1;j>=0;i-=2;)//这是到达目的台阶的走法
{
dp[i]+=dp[j];
dp[i]%=mod;//这是为了数据过大,进行取模操作。
}
cout<<dp[n]<<endl;
}
return 0;
}