前言:
这篇文章还是是为了帮助一些
像我这样的菜鸟
找到简单的题解
上了很久的csp复习课
我发现我动态规划的题解少之又少
这几期我来更新一下动规的题
问题描述:
一个楼梯有 n 级台阶,小苏同学从下往上走,一步可以跨一级,也可以跨两级。
问:他走到第 n 级楼梯有多少种走法?
输入格式
一行一个整数 n(0<n≤30)。
输出格式
一行n个整数,之间用一个空格隔开,表示走到第1级、第2级、……第n级分别有多少种走法。
样例输入
2
样例输出
1 2
问题解析:
这道题但凡知道斐波那切数列就都会做
第n级台阶的方法数是他前两项方法数的和
转换方程为:
f[i]=f[i-1]+f[i-2];
可参考:走楼梯2
完整代码:
#include<bits/stdc++.h>
using namespace std;
int f[35];
int main()
{
int n,i;
cin>>n;
f[1]=1;//设置第一阶台阶
f[2]=2;//设置第二阶台阶
for(int i=3;i<=n;i++)
{
f[i]=(f[i-1]+f[i-2]);//转换方程
}
for(i=1;i<=n;i++)
{
cout<<f[i]<<" ";
}
return 0;
}