蓝桥秘密冲刺计划(9.23)第39级台阶

  • 定位:2013年第四届蓝桥杯省赛C/C++ B组试题C
  • 原题:第39级台阶
    小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级。站在台阶前,他突然又想着一个问题:
    如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完39级台阶,有多少种不同的上法呢?
    请你利用计算机的优势,帮助小明寻找答案。
  • 属性:dfs+递归+模拟
  • 难度:入门
  • 独白:
    这第三题有点意思上来了,终于开始了蓝桥杯的dfs题虽然这题只能算得上是dfs中的基础。
    看完题干的描述,有很明显的递归含义在里面,按照题目描述,进行dfs尝试做一下,首先我们找到递归的突破口,这里我们找到两个突破口,一个是错误返回,一个是输出返回。当步数超过39时,错误返回,当步数等于39时还需要注意是否一共走了偶数步,同时满足两个条件,则方法(ans)+1。接着,我们开始寻找dfs的继承接口,一共有两个,一个是迈上一步,一个是迈上两步,无论是迈上一步还是两步,我们的迈数都得+1,但确实是两种不同的继承接口。捋清了递归的突破口和dfs的继承接口后,编写代码就容易多了,同时注意在模拟时要依据题干进行。(51167078
  • 代码:
//#include<bits/stdc++.h>
#include<iostream>
#include<cstdio>  
using namespace std;  
int N,sum;
int dfs(int num,int step,int n){
	if(step>n){
		return 0;
	}
	if(step==39&&num%2==0){
		sum++;
		return 0;
	}
	dfs(num+1,step+1,n);
	dfs(num+1,step+2,n);
}
int main(){
	cin>>N;
	dfs(0,0,N);
	cout<<sum;
	return 0;
}
  • 总结:基础的dfs题,我们只需要找到递归的突破口以及dfs的继承接口就可以迎刃而解了。
  • 感悟:少议论他人的是非,多反思自己的得失。
  • 归档:已归档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值