【STL容器vector+模拟+输入输出格式】HDU-4841 圆桌问题

在这里插入图片描述
在这里插入图片描述

注解

1、用vector容器来模拟。
2、模拟的过程:先从0到2n-1编号,然后每次把第m个消除(erase方法)。再遍历一遍整个容器,根据容器中剩下的编号,确定每个人是好人还是坏人。
3、注意输入和输出格式。

代码

#include <iostream>
#include <vector> 

using namespace std;

int main() {

	int n, m;
	while(~scanf("%d %d", &n, &m)) {
		vector<int> v;
		for(int i=0; i<2*n; i++){
			v.push_back(i);
		}
		int pos = 0;
		while(v.size()>n){
			pos = (pos+m-1) % v.size();
			v.erase(v.begin()+pos);
		}
		pos = 0;
		for(int i=0; i<2*n; i++){
			if(i && !(i%50)){
				cout<<endl;
			}
			if(pos<v.size() && v[pos]==i){
				pos++;
				cout<<"G";
			}
			else{
				cout<<"B";
			}
		}
		cout<<endl<<endl;
	}

	return 0;
}

结果

在这里插入图片描述

发布了475 篇原创文章 · 获赞 19 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/zhanggirlzhangboy/article/details/103675034