题目链接:有一个简化版本的题目:noi题库3525台阶问题
本文主要介绍了:
思路1 递推的朴素思维O(n*k)的相应解法和代码;
思路2 递推的优化O(n)的相应分析和代码;另外还有记忆化递归,还有拓展数据之后的矩阵乘法,有兴趣的同学可以自行前往。
题目大意:
1 在走楼梯的时候,每次可以上1-k级,从地面开始走到第n级,有多少种方案数。
解题思路1:朴素直观:O(n*k)
1 当前如果是第 x 级,可以从 x-1,x-2,x-3....x-k,这 k 级楼梯走上来,所以,只要双重循环枚举就可以了;
2 要注意细节就是楼梯是从0开始的,没有负数;
3 记得取模;
上代码:
//luogu1192:台阶问题:朴素的递推
//时间复杂度:n*k
#include<bits/stdc++.h>
#define mo 100003
using namespace std;
int n,k,ans=0;
int f[100005];
int main()
{