4.5蓝桥杯|高塔登顶方案(5025)

作者语录:

1、 从不会做到会做的过程,从不理解到不理解的过程,从一个不会做这道题的人的角度出发看这个问题,好命苦嗷嗷嗷!

2、只有我受煎熬吗,偶买噶,,,

目录

研究步骤:

[第一步:去做70. 爬楼梯 - 力扣(LeetCode)](#第一步:去做70. 爬楼梯 - 力扣(LeetCode))

第二步:使用斐波那契数列的思路暴力高塔登顶方案

第三步:使用前缀和优化


研究高塔登顶方案,如果没有思路:

研究步骤:

第一步:去做70. 爬楼梯 - 力扣(LeetCode)

cpp 复制代码
/*假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
示例 1:
输入:n = 2
输出:2
解释:有两种方法可以爬到楼顶。
1. 1 阶 + 1 阶
2. 2 阶
示例 2:
输入:n = 3
输出:3
解释:有三种方法可以爬到楼顶。
1. 1 阶 + 1 阶 + 1 阶
2. 1 阶 + 2 阶
3. 2 阶 + 1 阶
 
提示:
1 <= n <= 45*/

#include<bits/stdc++.h>
using namespace std;
//爬n阶楼梯,返回 
int cl(int n){
	if(n==1)return 1;
	if(n==2)return 2;
	int pre=1,last=2;
	int sum=0;
	for(int i=3;i<=n;i++){
		sum=pre+last;
		pre=last;
		last=sum;
	} 
	return sum;
}
int main(){
	int n;cin>>n; 
	cout<<cl(n)<<'\n';
	return 0;
} 

第二步:使用斐波那契数列的思路暴力 高塔登顶方案

cpp 复制代码
#include <iostream>
using namespace std;
#define int long long
const int mod=1e9+7;
const int N=1e5+10;
int f[N];
signed main()
{
  // 请在此输入您的代码
  int n,m,k; cin>>n>>m>>k;
  //求方案数
  f[1]=1;//f[x]里面存的是x的是到x层的方案数          
  for(int i=2;i<=n;i++){
    //想成是类斐波那契数列:这个数的值=前n个数的和,这里的n就是从i-m到i-k
    for(int j=m;j<=k;j++){
      f[i]=f[i]+f[i-j];
      f[i]=f[i]%mod;
    }
  }
cout<<f[n]<<'\n';
  return 0;
}

第三步:使用前缀和优化

这里前缀和,用prefixN 存放,prefix 是f 的前缀和,前缀和常用来计算区间l到区间r范围的和。

**参考前缀和的话:**前缀和

https://blog.csdn.net/weixin_47011416/article/details/145358498?spm=1011.2415.3001.10575&sharefrom=mp_manage_linkhttps://blog.csdn.net/weixin_47011416/article/details/145358498?spm=1011.2415.3001.10575&sharefrom=mp_manage_link

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int m=1e9+7;
const int N=1e5+10;
int f[N],prefix[N];
signed main()
{
  // 请在此输入您的代码
  int n,m,k; cin>>n>>m>>k;
  //求方案数
  f[1]=1; prefix[1]=1;//f[x]里面存的是x的是到x层的方案数    
  int l,r;    
  int a=0;  
  for(int i=2;i<=n;i++){
     /*for(int j=m;j<=k;j++){
      f[i]+=f[i-j];
      f[i]%=mod;
    }*/
    //回忆一下前缀和的算法模板
    
    l=max(a,i-k);
    r=max(a,i-m);
    f[i]=(prefix[r]-prefix[l-1]+m)%m;
    prefix[i]=(prefix[i-1]+f[i])%m;
  }
cout<<f[n];
  return 0;
   }
相关推荐
CoderYanger3 天前
A.每日一题:835. 图像重叠
java·开发语言·程序人生·leetcode·面试·职场和发展·学习方法
2401_832298103 天前
人机协同:AI时代全新工作与学习范式
职场和发展
童园管理札记3 天前
从政策驱动到课堂落地:2026年“人工智能+教育”全景解读与技术实践指南
人工智能·python·深度学习·职场和发展·学习方法
yuanxi2003 天前
卡塔尔能源公司LNG扩建项目首条生产线预计明年投运:大客户销售的5个判断
职场和发展·创业创新·学习方法
AI职业加油站4 天前
数据要素价值释放年:大数据治理工程师,站上职业新风口
人工智能·学习·职场和发展·数据分析·职场发展
倍利福猎头公司官方账号4 天前
2026具身智能赛道还火热吗?机器人人选该如何思考下半年的工作机会?
人工智能·面试·职场和发展·机器人·求职招聘
天真小巫4 天前
2026.9.20牛马日记
职场和发展
2401_832298104 天前
人工智能:重塑时代发展的核心科技力量
职场和发展
June bug4 天前
【HCIA- AI(正课)】4.1 华为智算方案
职场和发展
天真小巫5 天前
2026.9.19总结
职场和发展