深搜吧!

Posted codeg

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深搜吧!相关的知识,希望对你有一定的参考价值。

题目:

有n+m个地点,我们依次经过。 这些地点包括n个银行和m个超市,而且最后一个点是超市。初始有2块钱。遇到银行会再取一倍的钱,遇到超市会花一块钱。我们恰好在最后一个超市花完所有钱。 问你这n+m个点关于哪些点是银行,那些点是超市,可能是怎样的情况。把情况种数算出来。

输入范例
1 3
输出范例
1

技术分享
 1 /*直接深搜即可,可以适当剪枝。 不要忘记最后一个点是超市,且在最后一个点恰好花完最后一块钱。 
 2 于是,搜索条件可以是—— 
 3 1,num<=m 
 4 2,num==0作为结束的判定位置 
 5 3,枚举下个点是银行还是超市*/
 6  
 7 #include<iostream>
 8 using namespace std;
 9 
10 int dfs(int rest, int n, int m)
11 {
12     if(n == 0 && m == 1)
13     {
14         return rest == 1;
15     }
16     if(rest <= 0) return 0;
17     int res = 0;
18     if(m > 1 && rest > 1) res += dfs(rest - 1, n, m - 1);
19     if(n > 0 && rest * 2 <= m) res += dfs(rest * 2, n - 1, m);
20     return res;
21 }
22 
23 int main()
24  {
25      int n,m;
26     while(cin>>n>>m)
27     {
28        cout<<dfs(2, n, m)<<endl;
29     }
30     return 0;
31 }
View Code

 




以上是关于深搜吧!的主要内容,如果未能解决你的问题,请参考以下文章

socket-----爬虫&&文件传输

深搜1--城堡问题

十全时数——java代码(深搜)

十全时数——java代码(深搜)

深搜+栈==实现扁平化多级双向链表

源哥每日一题第十五弹 poj 1190 关于深搜减枝以及对于阅读代码的思考