文章

16

粉丝

0

获赞

66

访问

3.5k

头像
击鼓传花 题解:不使用循环队列,用数组循环的方式来实现
P1018 贵州大学机试题
发布于2025年3月2日 13:19
阅读数 321

#include <iostream>
#include <list>
using namespace std;

bool st[110];//用来判断某个位置是否有被出局 false 没有出局 true 出局

int main()
{
    int N;
    cin>>N;

    int totle = 0; //用来记录游戏进行到了多少轮
    int k = 0; // 用来记录当前传到第几个人了
    while(totle < N - 1)//要选出最后一个出局的,每轮出局一个所以只要循环n - 1轮剩下的那个就是
    {
        for(int i = 0; i < 2; i ++) //每次只传两次共三个人
        {

            //当前位置没有出局
            k = (k + 1) % N;
            while(st[k]) k = (k + 1) % N; //判断下一个要传给谁
        }
        //cout<<"k = "<<k<<endl;
        st[k] = true;
        k = (k + 1) % N;
        while(st[k]) k = (k + 1) % N; //寻找出局后第一个...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发