ACM模拟题详解(4)——递归

递归在解决一些问题的时候非常直观,但是在是使用递归的时候要注意递归的深度,如果深度太深,可能会造成堆栈溢出。下面通过实例介绍如何使用。

题目:超级楼梯
Problem Description
有一楼梯共M 级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M 级,共有多少种走法?
Input
输入数据首先包含一个整数N ,表示测试实例的个数,然后是N 行数据,每行包含一个整数M (1<=M<=40 ), 表示楼梯的级数。
Output
对于每个测试实例,请输出不同走法的数量
Sample Input
2
2
3
Sample Output
1
2
解题思路:这类题目首先要找到规律,可以试着写出M 比较少的情况,然后从中找规律。例如:
M 走法
1
2 1-2
3 1-3 (从1 走两级)1-2-3 (从2 走一级)
4 1-2-4 (从2 走两级) 1-2-3-4 1-3-4 (从3 走一级)
5 1-2-3-5 1-3-5 (从3 走两级) 1-2-3-4-5 1-2-4-5 1-3-4-5 (从4 走一级)
6 1-2-4-6 1-2-3-4-6 1-3-4-6 (从4 走两级)
1-2-3-5-6 1-3-5-6 1-2-3-4-5-6 1-2-4-5-6 1-3-4-5-6 (从5 走一级)
…
n n-2 层的所有走法走两级可以到达n 层,n-1 层的所有走法走一级可以到达n 层
n 层的走法可以表示为f(n) ,则f(n)=f(n-1)+f(n-2) ,n>4
这样就可以用递归计算了。参考代码如下:
/*
* 超级楼梯
*/
public static int test7(int n){
switch(n){
case 1:return 0;
case 2:return 1;
case 3:return 2;
default:return test7(n-1)+test7(n-2);
}
}
对于这种题目来说,使用递归速度并不快,并且递归太深的话会溢出,可以采用循环来处理,可以参考下面的代码:
/*
* 超级楼梯
*/
public static int test7(int n){
int[] result = new int[40];
result[0] = 0;
result[1] = 1;
result[2] = 2;
for(int i=3;i<n;i++){
result[i] = result[i-1]+result[i-2];
}
return result[n-1];
}

李绪成 优快云 Blog:http://blog.youkuaiyun.com/javaeeteacher
优快云学生大本营:
http://student.youkuaiyun.com/space.php?uid=124362
如果喜欢我的文章,就加我为好友:
http://student.youkuaiyun.com/invite.php?u=124362&c=7be8ba2b6f3b6cc5

acm之递归题目2 Problem Description今年的ACM暑期集训队一共有18人,分为6支队伍。其中有一个叫做EOF的队伍,由04级的阿牛、XC以及05级的COY组成。在共同的集训生活中,大家建立了深厚的友谊,阿牛准备做点什么来纪念这段激情燃烧的岁月,想了一想,阿牛从家里拿来了一块上等的牛肉干,准备在上面刻下一个长度为n的只由”E” “O” “F”三种字符组成的字符串(可以只有其中一种或两种字符,但绝对不能 阅读详情

相关推荐

acm之递归题目1

Problem DescriptionThere are many students in PHT School. One day, the headmaster whose name is PigHeader wanted all students stand in a line. He prescribed that girl can not be in single. In other wor

Jancy的博客 1359

acm入门——递归

对于递归的理解: 1、要有跳出递归的条件 2、不断地调用本身 注意:当满足跳出递归条件的时候,会返回上一层 例题: 杭电oj——一只小蜜蜂(http://acm.hdu.edu.cn/showproblem.php?pid=2044#top) ...

qq_43546060的博客 449

ACM博弈学习小结

1.ACM博弈题,不会的时候觉得难于上青天,会的时候觉得没有比博弈更水的题了; 博弈题看到的第一眼觉得是难题,代码敲完顿觉水题。你可能花半个小时去找规律,然后仅花2分钟敲代码。 2.博弈是单人游戏,也可以说是自己跟自己玩,因为“双方都做出最优决策”这一点限制了,最后的结果不取决 于你是谁,不取决于你的智商,只取决于你面对的局面; 3.局面,这是博弈里面最最最重要的东西!!!(所谓SG也是指这一局面的SG),博弈是一种不公平的游戏 因为游戏开始的时候已经结束了,影响你胜负的就是你所面对的局面,因为双方采取最优

Must so 7067

ACM详解(4)——递归

    递归在解决一些问题的时候非常直观,但是在是使用递归的时候要注意递归的深度,如果深度太深,可能会造成堆栈溢出。下面通过实例介绍如何使用。题目:超级楼梯Problem Description有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?Input输入数据首先包含一个整数N,表示测试实例的个数,然后是N行数据,每行包含一个整数M(

李绪成的一亩三分地 5037

acm递归算法总结竞赛

acm递归算法总结acm递归算法总结!!!!!!!!!!!!!!!!!!!!!!!

Synopsys工具filter命令:从数据筛选到高效IC设计的实战指南

在数字集成电路设计流程中,数据筛选与查询是工程师处理海量网表、时序报告和设计约束的核心需求。其原理在于通过声明式查询语言,直接对设计对象(如单元、网络、路径)的属性进行逻辑判断与模式匹配,从而精准定位目标。这种技术价值在于将工程师从繁琐的过程式脚本循环中解放出来,大幅提升代码可读性与运行效率,直接调用工具内置的高性能查询引擎。在实际应用场景中,它广泛用于物理与时序联合分析、层次化模块操作、动态约束生成以及自动化报告生成。本文聚焦于Synopsys工具链中filter命令的高阶用法,深入解析其表达式语法、正则

weixin_28007513的博客 577

【ACM算法】-- 搜索篇 - 递归的应用

第一题: 思路: 这是有名的素数环问题,由输入得知,输入的数据范围是小于17的,所以两数之和是小于34的,即只需要找出小于34的所有素数即可。 对于递归这里,这道题要求打印出所有数据,并且每个数都只能用一次。递归的问题可以看成对于树的深搜问题,对于当前状态,总的来说,也就是长远来看,需要扩展出他所能走的所有状态,但是就目前来看,他只需要在当前状态下一直走下去,直到走不了为止,这相当于走路,...

风一样的少年 227

Claude Desktop Cowork国内实操指南:本地文件自动化办公

大语言模型正从‘问答式AI’迈向‘执行型协作者’,其核心能力在于直接操作本地文件、调用系统工具并嵌入真实工作流。Claude Desktop的Cowork模式正是这一范式的代表,它通过轻量沙箱VM实现对Excel、PPT、PDF、音视频等办公资产的读写与处理,无需手动编码即可完成数据清洗、会议纪要生成、自动化报告输出等任务。技术价值体现在权限可控、环境隔离、结果可交付;典型场景覆盖行政文秘的文档流转、销售运营的数据分析、开发者的脚本调试与环境验证。本文聚焦国内用户高频卡点——网络链路、系统权限与工作流断层,

weixin_30617737的博客 468

acm算法基础2 递归,分治和贪心

2013 年 5 月 5 日 by sciencefans 1、递归与分治:棋盘覆盖问题,循环日程表问题,巨人与鬼问题以及非线性方程求根问题。 第一个把棋盘递归,每次分成四个面积相等的部分。第二个同第一个,只不过每次递归注意父方块里面的四个小方块之间的关系。第三个选取最低最左点,依次逆时针扫描。扫到巨人和鬼相同数目的时候配对,分治。最后一个用高中学过的二分即可。 2、贪心法:最优装载问题,部

sciencefans的成长路 717

从零构建生产级K8s-v1.35.0集群:基于Containerd与Cilium的kubeadm实战指南

本文详细介绍了从零构建生产级K8s-v1.35.0集群的全过程,涵盖环境准备、Containerd配置、Kubernetes组件安装、集群初始化及Cilium网络部署等关键步骤。通过实战经验分享系统调优技巧和常见问题解决方案,帮助读者快速搭建稳定高效的Kubernetes集群。

weixin_28725553的博客 222

基于DO-178C/331的飞控软件研发环境的研究

本研究提出了一套基于DO-178C/331标准的飞控系统软件开发和验证框架。通过优化模型库的设计、代码生成配置和测试验证流程,显著提升了飞控系统软件的开发效率和安全性。未来的研究可以进一步扩展模型库的功能,以适应更复杂的飞控系统需求。

qq_41854911的博客 563

ACM做题细节!

1.   如果题目是枚举的话,即最后化成十分简单的形式比较小,       可以直接将各种不同状态的结果运算过程写出来,但是这并不见得比写函数要快多少       而且比较容易出错,比如下标没有更改之类,这种错误比较烦人,因为你会查看算法,       但是算法本身并没有错误,所以如果复制粘贴的话,注意不同情况的不同点,如果自己       不够细心,最好写成函数的形式(注意判断边界),以

architect19的专栏 1752

ubuntu系统禁止/开启内核自动更新

内核自动更新会导致驱动和内核版本不对应,导致驱动无法使用,所以需要禁止自动更新内核。本文介绍ubuntu系统禁止/开启内核更新的方法。

m0_50105717的博客 5290

一道简单的ACM递归题

编写递归函数Acm(m,n)实现如下图所示的Acm函数,其中m、n为正整数。例如:Acm(2,1)=5,Acm(3,2)=29。 Acm(m,n) = \begin{cases}n+1&(m=0) \Acm(m-1,1)&(n=0) \Acm(m-1,Acm(m,n-1))&(m>0,n>0) \end{cases} 输入m和n两个整数,输出Acm(m,n)。如...

韶言大雅 2649

Windows11配置WSL2支持代理上网

说起来本来这个功能我也不需要的,只是最近突然有个需求就顺便研究了下,WSL2默认的网络方式是NAT,即WSL2的网卡本身是虚拟网卡,通过以太网或WIFI的地址转换来上互联网,我试了下是不能直接走代理的,最近比较忙没具体研究,但是我用另一种方式实现了,下面介绍给需要的人。注意:这个方法只能是WIndows11系统,WIndows10系统上的WSL2缺少了一项功能导致不可用。1、方法总体没什么难度,NAT方式暂时没研究透,后续有时间再研究2、WIndows10系统不支持mirrored,暂时需要另辟蹊径。

jiexijihe945的博客 9592

实战|2026美团&大众点评餐饮数据抓取:Playwright/Selenium反爬全攻略

核心结论:2026年美团&大众点评的反爬核心是“多维度风控”,需组合使用“住宅IP+设备指纹伪装+真人行为模拟+动态验证处理”,Playwright是最优工具,Selenium仅作为补充。效率优化:单机爬取速度建议控制在“每小时500-800条”,避免高频请求触发风控;分布式爬取需确保每个节点使用独立住宅IP,且行为轨迹不一致。扩展方向集成WASM解密工具,破解2026年美团的Token加密;用AI识别动态点选验证,提升验证通过率;对接大数据平台,对抓取的餐饮数据进行可视化分析。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2465

ACM--递归效率的比较

测试用例: 2 1 2 3 50 改进前的代码(用递归的方法): #include using namespace std; int main() { long long getStep(int, int); int n,a,b; cin>>n; while(n--) { cin>>a>>b; cout<<getStep(a,b)<<endl; } return

路漫 1122

【29】软考软件设计师——SQL语句编写与优化深度精讲|数据库大题延伸满分攻略

本文是《软件设计师·50讲通关|从零基础到工程师职称》专栏第29篇,承接第28篇ER图转关系模式核心内容,作为**下午第2题数据库大题核心延伸必考模块**,单模块累计占分5~8分,是数据库板块性价比极高的提分重点。全文超4000字深度拆解软考全部SQL高频考点:全覆盖多表连接底层逻辑、嵌套子查询分类实操、GROUP BY分组聚合硬核规则、索引全品类设计原理、联合索引最左匹配底层机制,搭配海量可直接复刻的考场SQL模板、历年真题完整改写案例、索引失效场景实操复盘、慢查询优化落地技巧。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 527

关于对ACM OJ大数据递归 栈溢出 问题的解决方案

关于对ACM OJ大数据递归栈溢出问题的解决方案 本文章大部分是引用 晚晴小筑 的博客,http://blog.csdn.net/x_iya/article/details/817113晚晴小筑8  ,当然,过程中穿插了自己的想法! 解决方案 对于内存限制,除了SGU的OJ,各个题库所给出的限制一般是很宽松的(卡内存题目除外),最小也有32MB(32768KB)。然而,大部分评测机的栈空间

Fighting! 3008

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

一周acm学习总结——递归算法

一周acm学习总结——递归算法 1.我的理解 递归算法简而言之,就是将复杂问题层层转化成一个小问题,函数自己调用自己; 2.老师一直强调难点在于找出结束的终止条件,但在我自己做题过程中反而觉得最难的在于找出递归关系来,对于我一个数学不好的人来说,找出递归关系,找出规律真的好难。 3.在写代码过程中发现了自己本身存在的很多问题,都是上学期没学好所致,比如字符数组的使用,字符数组的传参等等 4.pel...

qq_45955682的博客 368

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

2025年ACM大一训练递归——NEFU

acm递归练习

ljzzzzz的博客 604

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

『ACM』ACM模板合集

ACM模板整理: 数学: 数论–康托展开与逆康托展开模板 数论–组合数(卢卡斯+扩展卢卡斯)模板 数论–Miller_Rabin判断素数 数论–中国剩余定理模板 数论–逆元(拓展欧几里得)模板 数论–逆元(费马小定理)模板 数学–数论–因子和线性筛 (模板) 数学–数论–随机算法–Pollard Rho 大数分解算法(纯模板带输出) 数学–数论–快速幂–最大公约数–位运算模板 线性筛求积性...

日拱一卒,功不唐捐 8282

Nefu ACM递归训练

任何一个正整数都可以用2的幂次方表示。例如 137=2^7+2^3+2^0 由此可知,137可表示为: 2(7)+2(3)+2(0) 而7又可以表示为:2(2)+2+2(0) 3可以表示为:2+2(0) 因此137最终表示为: 2(2(2)+2+2(0))+2(2+2(0))+2(0)我认为问题的关键是在于对一个数出现情况的分类,比如说某个数是n,n-1=0时,就输出2(0),n-1>0时输出2(0)+;等等下面列举所有情况,初始化a[0]=1;作为2的幂次用于下面运算。

xiaolu_sixteen的博客 497
上一篇: ACM模拟题详解(3)——数论(续)
下一篇: ACM详解(5)——排序
Java_Web_Book
博客等级 码龄18年 8粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值