约瑟夫环问题-hebust

约瑟夫环问题-hebust

约瑟夫环问题

约瑟夫环是一个数学的应用问题:已知n个人(以编号a,b,c…分别表示)围坐在一张圆桌周围。从编号为1的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。

输入格式:
固定为2行,第一行为m,第二行为n个人的名称列表,用英文字母代表,元素直接使用英文逗号 , 分开

输出格式:
一行,为出列元素序列,元素之间使用英文逗号 , 分开【注意:末尾元素后没有逗号】

输入样例:
在这里给出一组输入。例如:

3
a,b,c,d,e,f,g
输出样例:
在这里给出相应的输出。例如:

c,f,b,g,e,a,d

#include<iostream>
#include<string>
using namespace std;
int main(){
	char str[55]={};
	int n;
	cin>>n;
	string a;
	cin>>a;
	int k=0;
	int flag=0;
	for(auto t:a){
		if(t!=',')
		str[k++]=t;
	}
	int tmp=1;
	for(int i=0;i<k;){
		if(str[i]=='*'){
			i++;
			if(i==k)i=0;
			continue;
		}
		if(tmp%n==0){
			if(flag==0);
			else if(flag!=0)cout<<',';
			flag++;
			cout<<str[i];
			str[i]='*';
			if(flag==k)break;
		}
		tmp++;
		i++;
		if(i==k)i=0;
	} 
}
发布了99 篇原创文章 · 获赞 13 · 访问量 2705

猜你喜欢

转载自blog.csdn.net/qq_44378358/article/details/103325737