zoukankan      html  css  js  c++  java
  • 酒桌游戏——队列

    Description

    n个人围成一个圆桌,按照顺时针的顺序1,2,...n进行编号;某一个人开始报一个数字,然后顺时针的下一个人会报数+1;
    当某个人报的数字含有7或是7的倍数时,这个人退出游戏,其他人接着报数!直到剩下一个人为止!

    Input

    输入n,m,t;n代表人数,m代表开始报数的人的编号;t表示开始报数的人报出的数字是t;
    然后接下来有n行,是这n个人的名字!

    Output

    输出最后一个人的名字!

    Sample Input

    5 3 20
    liming
    wangze
    gongxiangjun
    wangming
    chenzhen
    
    
    

    Sample Output

    chenzhen
    _________________________________________________________________________________________________________
    这道题用队列的知识做就行啦。不用二维数组也行。上代码:
    #include<bits/stdc++.h>
    using namespace std;
    bool judge(int num)
    {
        while(num>0)
        {
            if(num%10==7) return 1;
            num=num/10;
        }
        return 0;
    }                                      //判断本数中是否还有7的数字。
    int main()
    {
        ios::sync_with_stdio(false);      //用cin、cout的时候加上他,可以缩短时间。当然了,直接用scanf、printf就避免了这种麻烦。
        int n,m,t;
        string a,b;
        cin>>n>>m>>t;
        queue<string>vis;                  //定义一个队列。
        for(int i=1;i<=n;i++)
        {
            cin>>a;
            vis.push(a);
        }
        for(int i=1;i<m;i++)
        {
            b=vis.front();vis.push(b);
            vis.pop();
        }                                     //将第m个人放在队首。
        while(vis.size()>1)
        {
            if(t%7==0||judge(t)) vis.pop();
            else
            {
                b=vis.front();vis.push(b);
                vis.pop();
            }
            t++;
        }
       cout<<vis.front()<<endl;
       return 0;
    }
    
    
     
     
    成功不是偶然的,失败也不是必然的。
  • 相关阅读:
    05.Linux Startup & Shutdown
    04.Linux Disk Partition & Mount Point
    03Oracle数据查询(二)
    02Oracle数据查询(一)
    01Oracle数据库系统环境搭建
    02域名的选择技巧与注册实战
    01快速认识阿里云网站建设
    Linux文件操作
    Linux目录操作
    Linux根目录介绍
  • 原文地址:https://www.cnblogs.com/zhuyukun/p/12363752.html
Copyright © 2011-2022 走看看