zoukankan      html  css  js  c++  java
  • 深搜吧!

    题目:

    有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
  • 相关阅读:
    apache多端口映射
    mark
    一些注册表值
    jsp URL中文处理的几种方式
    【引用】雨林木风Ghost XP SP3系统
    CentOS常用命令
    查看ie8临时文件夹
    卡塔兰数
    大数问题
    不会做的题目
  • 原文地址:https://www.cnblogs.com/darklights/p/7041080.html
Copyright © 2011-2022 走看看