報數遊戲(queue)

有n個小朋友做遊戲,他們的編號分別是1,2,3,4…n。他們按照編號從小到大依次順時針圍成一個圓圈,第一個小朋友開始報數,依次按照順時針方向報數(報數的值加一),每個報m的人會離開隊伍,然後下一個小朋友會繼續從1開始報,直到剩下一個小朋友爲止。輸出最後小朋友的編號.

#include<iostream>
#include<queue>
#include<string>
using namespace std;
int main(){
	int n,m;
	cin>>n>>m;
	queue<int> q;
	for(int i=1;i<=n;i++){//將小朋友排的隊依次壓入隊列 
		q.push(i);
	}
	int cur=1;//記錄當前報的數 
	while(q.size()>1){//保證剩一個小朋友
		int x=q.front();
		q.pop();
		if(cur==m){//如果當前小朋友報的是m就離開隊列 
			cur=1;//下一個小朋友從1開始報 
		}else{
		q.push(x);//如果當前小朋友報的不是m,就繼續到隊尾排隊 
		cur++;//報的數加一 
	}
	
    } 
    cout<<q.front()<<endl;//最後剩下的小朋友就是答案
	return 0;
}

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章