李白打酒-DFS
2016-03-13 18:52
405 查看
第三题:李白打酒 (8' )
话说大诗人李白,一生好饮。幸好他从不开车。
一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱:
无事街上走,提壶去打酒。
逢店加一倍,遇花喝一斗。
这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。
请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。则:babaabbabbabbbb 就是合理的次序。像这样的答案一共有多少呢?请你计算出所有可能方案的个数(包含题目给出的)。
注意:通过浏览器提交答案。答案是个整数。不要书写任何多余的内容。
快速解题思路:dfs
答案:14
深度优先
这个图,深度优先就像铁骨铮铮的好汉,遵循“能进则进,不进则退”的原则。
第一步:同样也是从isTrav数组中选出一个未被访问的节点,如V1。
第二步:然后一直访问V1的邻接点,一直到走头无路的时候“回溯”,路线为V1,V2,V3,V4,V5,到V5的时候访问邻接点V1,发现V1是访问过的,
此时一直回溯的访问直到V1。
第三步: 同样有的图中通过一个顶点的“深度优先”不能遍历所有的顶点,此时我们重复(1-2)的步骤就可以最终完成深度优先遍历。
顶1
踩
话说大诗人李白,一生好饮。幸好他从不开车。
一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱:
无事街上走,提壶去打酒。
逢店加一倍,遇花喝一斗。
这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。
请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。则:babaabbabbabbbb 就是合理的次序。像这样的答案一共有多少呢?请你计算出所有可能方案的个数(包含题目给出的)。
注意:通过浏览器提交答案。答案是个整数。不要书写任何多余的内容。
快速解题思路:dfs
#include <iostream> #include <cmath> #include <cstdio> #include <cstring> using namespace std; #define eps 10e-10 int ans; void dfs(int alco,int store,int flower,int pre)//dfs的参数为根节点,因同时有store和flower的限定,将其放入参数中较方便 { if(store==0&&flower==0) { if(pre==0&&alco==0)//标记最后一次遇到的是花 { ans++; } return;//已经没有店家和花,此时不管是否情况正确,都退出递归 } if(store > 0) { dfs(alco*2,store-1,flower,1); //标记遇到的是店家 } if(alco > 0 && flower > 0) { dfs(alco-1,store,flower-1,0); } return ; } int main() { ans = 0; dfs(2,5,10,-1); cout<<ans<<endl; return 0; }
答案:14
深度优先
这个图,深度优先就像铁骨铮铮的好汉,遵循“能进则进,不进则退”的原则。
第一步:同样也是从isTrav数组中选出一个未被访问的节点,如V1。
第二步:然后一直访问V1的邻接点,一直到走头无路的时候“回溯”,路线为V1,V2,V3,V4,V5,到V5的时候访问邻接点V1,发现V1是访问过的,
此时一直回溯的访问直到V1。
第三步: 同样有的图中通过一个顶点的“深度优先”不能遍历所有的顶点,此时我们重复(1-2)的步骤就可以最终完成深度优先遍历。
顶1
踩
相关文章推荐
- struts2标签--form中的theme属性
- 【MDCC2015】 平台与技术-Android专场(下):共享Android应用开发经验
- 将数值四舍五入后格式化,带有千分位
- C++模板之特化与偏特化详解 http://www.jb51.net/article/56004.htm
- 【MDCC 2015】平台与技术-Android专场(上):剖析Android应用架构与设备体验
- 软件项目管理(1)
- BZOJ3934 : [CQOI2015]标识设计
- 工厂里的那些事
- [CAAnimation核心动画练习四]饼图1.5 增加值的显示
- hdu1573X问题 同余
- 习题一:秒表程序
- 安装ADT和ADK到eclipse
- #Introduce about argc and *argv[]
- [POJ2311]Cutting Game(博弈Multi-SG函数)
- Swift-predecessor(), successor(), advancedBy()
- cocos2dx 自定义事件
- 在C/C++中,自定义的swap函数详解
- 推荐一个第三方Qt库的集合
- app推送中的通知和消息区别
- DOM或BOM区别