zoukankan      html  css  js  c++  java
  • 排队买票问题

    一场球赛开始前,售票工作正在紧张的进行中。每张球票为50元,现有30个人排队等待购票,
    其中有20个人手持50元的钞票,另外10个人手持100元的钞票。假设开始售票时售票处没有零钱,求出这30个人排队购票,
    使售票处不至出现找不开钱的局面的不同排队种数。(约定:拿同样面值钞票的人对换位置后为同一种排队)

    方法一:

    #include<iostream>
    using namespace std;
    int main()
    {
        char quque[30];//排队队列
        int count_0=0,count_1=0;//收银台count_0表示50的个数,count_1表示100的个数
        int i=-1,j=0,k=0;
        do{
            if(count_0<20) {count_0++; quque[++i]=0;}
            else{count_1++; quque[++i]=1;}
            if(i==29)    //判断是否站完
            {
                ++k;//结果+1
                while (count_1==count_0 || count_1==10 || count_0==20 || quque[i+1])//回溯
                    quque[i--]?--count_1:--count_0;    
                quque[++i]=1;
                count_1++;
            }//end if(i==29)    
        }while(i>=0);
        cout<<"总共有 "<<k<<" 排队总数!"<<endl;
        return 0;
    }

    方法二:

    #include <iostream>
    using namespace std;
    int solve(int a,int b)
    {
      if(a<0 || b<0 || b>a) return 0;   if(a==0 || b==0) return 1;   return solve(a-1,b) + solve(a,b-1); } int main()
    {   cout
    <<solve(20,10)<<endl;   return 0; }
  • 相关阅读:
    servlet中Cookie的编码问题
    servlet关于转发用法
    eclipse界面更改为黑色
    猜字符小游戏——可以设置等级
    uva 10655
    uva11029
    UVA11388 GCD LCM1 2 -1
    uva 11609
    poj 2436
    poj 2431
  • 原文地址:https://www.cnblogs.com/dzqdzq/p/3032131.html
Copyright © 2011-2022 走看看