码迷,mamicode.com
首页 > 其他好文 > 详细

深搜吧!

时间:2017-06-17 20:37:41      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:包括   ios   cin   pre   std   ide   name   close   sed   

题目:

有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

 

深搜吧!

标签:包括   ios   cin   pre   std   ide   name   close   sed   

原文地址:http://www.cnblogs.com/darklights/p/7041080.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!