码迷,mamicode.com
首页 > 编程语言 > 详细

算法学习——递归之排队购票问题

时间:2018-09-21 13:34:03      阅读:525      评论:0      收藏:0      [点我收藏+]

标签:public   gui   ati   结果   ext   next   定义   分享图片   exti   

算法描述

一场球赛开始前,售票工作正在紧张的进行中.每张球票为50元,现有m+n个人排队等待购票,其中有m个人手持50元的钞票,另外n个人手持100元的钞票.假设开始售票时售票处没有零钱,求出m+n排队购票,

算法思路

定义函数f(m,n)表示m个人手持50元,n个人手持100元共有的排队种数

  1. 当n=0,没有手持100元的人排队,这个情况是找得开钱 f(m,0) =1

  2. 当m<n,(手持50元的人数小于手持100元的人数) f(m,n)=0

  3. 其他情况

    当第m+n个人手持100元,他之前的m+n-1个人有m个人手持50元,n-1个人手持100元,共有的排队种数为f(m,n-1)

当第m+n个人手持50元,他之前的m+n-1个人有m-1个人手持50元,n个人手持100元,共有的排队种数为f(m-1,n)

根据上述情况可得到

递归公式f(m,n)=f(m-1,n)+f(m,n-1)

递归出口n=0 f(m,0)=1 m<n f(m,n)=0

算法实现

    Scanner scanner = new Scanner(System.in);
    int m = scanner.nextInt();
    int n = scanner.nextInt();
    scanner.close();
    long temp = digui(m, n);
    System.out.println(temp);
}
public static long digui(int m,int n){
    if(n==0){
        return 1;
    }else if(m<n){
        return 0;
    }else{
        return digui(m-1,n)+digui(m,n-1);
    }
}

结果

技术分享图片

算法学习——递归之排队购票问题

标签:public   gui   ati   结果   ext   next   定义   分享图片   exti   

原文地址:https://www.cnblogs.com/kexing/p/9685930.html

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