蓝桥杯真题 39层台阶(dfs)
2017-03-21 19:34
141 查看
题目描述 第39阶台阶 小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!
站在台阶前,他突然又想着一个问题:
如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完39级台阶,有多
少种不同的上法呢?
请你利用计算机的优势,帮助小明寻找答案。
要求提交的是一个整数。 注意:不要提交解答过程,或其它的辅助说明文字
在这个代码中学会了n&1的用法单纯的&1是没有意义的 而且是非法的,但是一个变量n&1
是合法的,代表的意思是n和1做二进制的且运算,即看n的最后边(二进制)那一位是不是1。是1的话,返回1,否则返回0。等效于n%2==0/1,但是a%2的效率要低一些
没有&运算快在C/C++语言里,&代表取地址或者“位与”运算
站在台阶前,他突然又想着一个问题:
如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完39级台阶,有多
少种不同的上法呢?
请你利用计算机的优势,帮助小明寻找答案。
要求提交的是一个整数。 注意:不要提交解答过程,或其它的辅助说明文字
#include<stdio.h> int count=0; int dfs(int step,int bushu) { if(step==39&&!(bushu&1))//步数必须是偶数(39层台阶,最后一步是右脚) { count++; } else if(step>39) return; return dfs(step+1,bushu+1)+dfs(step+2,bushu+1);//每次可以上1层或2层台阶 } int main() { dfs(0,0); printf("%d",count); return 0; }
在这个代码中学会了n&1的用法单纯的&1是没有意义的 而且是非法的,但是一个变量n&1
是合法的,代表的意思是n和1做二进制的且运算,即看n的最后边(二进制)那一位是不是1。是1的话,返回1,否则返回0。等效于n%2==0/1,但是a%2的效率要低一些
没有&运算快在C/C++语言里,&代表取地址或者“位与”运算
1、取变量的地址:&变量名,这将获得该变量的地址,例:int a = 1, &p = a。 2、进行位与运算,格式是:变量1&变量2,进行计算时,将会把类型提升为int。 “位与”运算是“位运算”的一种,运算法则是在二进制数下,相同位的两个数字都为1,则为1;若有一个不为1,则为0。&运算通常用于二进制取位操作,例如一个数 & 1的结果就是取二进制的最末位。这可以用来判断一个整数的奇偶,二进制的最末位为0表示该数为偶数,最末位为1表示该数为奇数。 再举个例子,6的二进制是110,11的二进制是1011,那么6 & 11(也可以表达为6 and 11)的结果就是二进制的10,即十进制的2。
相关文章推荐
- 蓝桥杯第五届省赛JAVA真题----n级台阶
- 第四届蓝桥杯C++B组——第39级台阶(dfs)
- 蓝桥杯 历届真题之剪格子(dfs)
- 【蓝桥杯真题】题目标题: 第39级台阶
- 蓝桥杯 第39阶台阶(dfs)
- 蓝桥杯 历届真题之剪格子(dfs)
- 蓝桥杯真题 第39阶台阶
- 蓝桥杯 历届真题之剪格子(dfs)
- 蓝桥杯 第39级台阶 dfs
- 蓝桥杯 第四届C/C++预赛真题(3) 第39级台阶(递归)
- 蓝桥杯 历届真题之剪格子(dfs)
- 2013年第四届蓝桥杯C/C++省赛 第39级台阶(结果填空) ----DFS深度搜索遍历和暴力搜索
- 第四届蓝桥杯 软件类省赛真题 第四题:第39级台阶
- 蓝桥杯真题 39级台阶 题解
- 蓝桥杯 历届真题之剪格子(dfs)
- 蓝桥杯 历届真题之剪格子(dfs)
- 蓝桥杯 第39级台阶 (dfs and 回溯)
- 第六届蓝桥杯决赛真题 04 穿越雷区(dfs || bfs)
- 蓝桥杯 历届真题之剪格子(dfs)
- DFS-带分数(蓝桥杯历届真题)