每日刷题(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;
}
所以,这个电影好看吗?评论区见