蓝桥杯备考:动态规划线性dp之下楼梯问题进阶版
- 软件开发
- 2025-09-11 18:12:02

老规矩,按照dp题的顺序
step1 定义状态表达 f[i]表示到第i个台阶的方案数
step2:推导状态方程
step3:初始化 初始化要保证 1.数组不越界 2.推导结果正确
如图这种情况就越界了,我们如果把1到k的值全初始化也不现实,会增加程序的时间复杂度
我们可以这样,我们把数组下标为0的位置设置成1,那么f[1]=f[0] f[2] = f[1]+f[0]=2
f[3] = f[0]+f[1]+f[2] = 4 这个是可以的
step4:找结果
这个结果就是f[n]的值
代码:
#include <iostream> using namespace std; const int N = 1e5+10,mod=1e5+3; int f[N]; int n,k; int main() { cin >> n >> k; f[0] = 1; for(int i = 1;i<=n;i++) { for(int j = 1;j<=k&&i-j>=0;j++) { f[i] +=f[i-j]; } f[i]%=mod; } cout << f[n] << endl; return 0; }蓝桥杯备考:动态规划线性dp之下楼梯问题进阶版由讯客互联软件开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“蓝桥杯备考:动态规划线性dp之下楼梯问题进阶版”
![【算法每日一练]-数论(保姆级教程篇1埃氏筛,欧拉筛)](/0pic/pp_11.jpg) 
               
               
               
               
               
               
               
   
   
   
   
   
   
   
   
   
   
   
  