• 酒桌游戏——队列


    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;
    }
    
    
     
     
    成功不是偶然的,失败也不是必然的。
  • 相关阅读:
    mysql数据类型介绍
    IO中同步、异步与阻塞、非阻塞的区别(转)
    法线
    C++配置坑-----openCv环境配置
    C++学习记录
    FBX SDK环境配置
    Unity调起外部程序cmd.exe等
    unity读写Excel表格
    Unity编辑器扩展
    Unity 读写文本 文件
  • 原文地址:https://www.cnblogs.com/zhuyukun/p/12363752.html
Copyright © 2020-2023  润新知