zoukankan      html  css  js  c++  java
  • 4210: 孙壕请一盘青岛大虾呗【递归/注意结束条件】

    4210: 孙壕请一盘青岛大虾呗

    Time Limit: 5 Sec  Memory Limit: 128 MB
    Submit: 640  Solved: 290

    Description

    话说那一年zstu与gdut进行了一场PK赛,很侥幸的zstu赢了。按照约定,gdut的孙壕得请客。大家呼声很高,均高呼:“孙壕请一盘青岛大呗!”
    作为gd的一壕,孙壕爽快的答应了。不过zsj说光吃大虾怎么能过瘾,酒是必须上的。说罢,zsj拿出了2瓶赊店老酒。然而2瓶酒显然不能满足大的要求。xs提议青岛大街走一走,逢店加一倍(酒),逢摊吃大虾并喝一瓶(酒)。这一路走过去,遇到店n次,大排档m次,已知最后1次是大排档,大伙正好把酒喝完。请你计算孙壕请客遇到酒店和大排档的次序,合理的次序一共有多少种?

    Input

    多组测试数据,每组输入2个整数n和m(均不大于10)

    Output

    对于每组测试数据输出一行,值为符合条件的次序数.

    Sample Input

    1 3

    Sample Output

    1

    HINT

    1 3的情况是:


    先大排档 酒由2瓶变1瓶


    然后酒店 酒由1瓶变2瓶


    然后2次大排档,各喝1瓶,正好喝完

    【代码】:

    #include<bits/stdc++.h>
    #include<cstdio>
    #include<algorithm>
    #include<iostream>
    #include<cstring>
    #include<string>
    #include<cmath>
    #include<set>
    using namespace std;
    
    #define ll long long
    #define N 100005
    #define PI acos(-1.0)
    int n , m, ans;
    void dfs(int n, int m, int sum)
    {
        if(m==1 && n==0 && sum == 1)//这个是满足要求的终止条件。没有店剩下,还剩一摊和一酒
        {
            ans++;
        }
        if(n<0 || m<0)
        {
            return ;
        }
        dfs(n-1,m,sum*2);
        dfs(n,m-1,sum-1);
    }
    
    int main()
    {
        while(cin >> n >> m)
        {
            ans = 0;
            dfs(n,m,2);
            cout<<ans<<endl;
        }
    }
    DFS
  • 相关阅读:
    普通锁和分布式锁
    java 正则表达式
    java 字符串转date 格式转换
    消息中间件 kafka
    数据的存储方式:对象存储、文件存储、块存储
    Exceptional Control Flow(6)
    Exceptional Control Flow(5)
    Exceptional Control Flow(4)
    Exceptional Control Flow(3)
    Exceptional Control Flow(2)
  • 原文地址:https://www.cnblogs.com/Roni-i/p/8783515.html
Copyright © 2011-2022 走看看