蓝桥杯2013第四届C语言B组省赛习题题解——习题C.第39级台阶

每日刷题(103)

第39级台阶

题目描述

小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!
站在台阶前,他突然又想着一个问题:
如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完39级台阶,有多少种不同的上法呢?
请你利用计算机的优势,帮助小明寻找答案。

题目要求

要求提交的是一个整数。
注意:不要提交解答过程,或其它的辅助说明文字。

思路

又是dfs呗。。。

C++代码

#include<bits/stdc++.h>
using namespace std;

int ans = 0;
int sum = 0;
vector<int> a(40, 0);

void dfs(int steps)
{
    
    
	if(sum >= 39)
	{
    
    
		if((steps - 1) % 2 == 0 && sum == 39)
			ans++;
		return;
	}
	
	for(int i = 1; i <= 2; i++)
	{
    
    
		a[steps] = i;
		sum += i;
		dfs(steps + 1);
		sum -= i;
	}
}


int main()
{
    
    
	dfs(1);
	cout << ans << endl;
	return 0;
}

运行结果:
在这里插入图片描述
答案就是:
51167078

萝卜青菜各有所爱(另一款C++解法)

#include <iostream>
#include <algorithm>
using namespace std;
int cnt;
void dfs(int step,int sum){
    
    
	if(sum>=39){
    
    
		if(sum==39&&step%2==0) cnt++;//注意只有恰好sum==39符合偶数步才ok 
		return;
	}
	dfs(step+1,sum+1);
	dfs(step+1,sum+2);
}
int main() {
    
    
	dfs(0,0);
	cout<<cnt;
	return 0;
}

所以,这个电影好看吗?评论区见
在这里插入图片描述

如果喜欢我的文章,请记得三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持,下期更精彩!!!

猜你喜欢

转载自blog.csdn.net/qq_44631615/article/details/115027388