“圆桌问题”

  • 圆桌边围坐着 2n 个人。其中n个人是好人, 另外n个人是坏人。从第一个人开始数, 数到第 m 个人, 立即赶走该人; 然后从被赶走的人之后开始数,再将数到的第 m人赶走, 依此方法不断赶走围坐在圆桌边的人。预先应如何安排这些好人与坏人的座位, 才能使得在赶走 n 个人之后圆桌边围坐的剩余的n个人全是好人 ?
  • //输入 : 多组数据,每组数据输入 : n, m < =32767。
  • //输出 : 对于每一组数据, 输出 2n 个大写字母,“G”表示好人,“B”表示坏人, 50 个字母为一行,不允许出现空白字符。相邻数据间留有一个空行。
  • //输入样例 :2 3 2 4
  • //输出样例 :GBBG BGGB
  • //这个题目是约瑟夫问题。用 vector 模拟动态变化的圆桌,赶走n个人之后留下的都是好人
#include<iostream>
#include<vector>
using namespace std;
int main()
{
	vector<int>table;
	int n, m;
	while (cin >> n >> m) {
		table.clear();
		for (int i = 0; i < 2 * n; i++) table.push_back(i);
		int pos = 0;
		for (int i = 0; i < n; i++) {
			pos = (pos + m - 1) % table.size();
			table.erase(table.begin() + pos);
		}
		int j = 0;
		for (int i = 0; i < 2 * n; i++) {
			if (!(i % 50) && i) cout << endl;
			if (j < table.size() && i == table[j]) {
				j++;
				cout << "G";
			}
			else
				cout << "B";
		}
		cout << endl << endl;
	}
	return 0;
}



全部评论

相关推荐

不愿透露姓名的神秘牛友
05-29 15:00
教授A:“你为什么要讲这么久,是要压缩我们对你的评议时间吗?你们别以为这样就能够让我们对你们少点意见。”&nbsp;“从你的发言和论文格式就能知道你的性格啊。”…….&nbsp;感觉被狠狠霸凌了。
码农索隆:“教授您好,首先我想回应您提出的两点疑问。” “关于我讲解时间较长的问题:这绝非为了压缩各位老师的评议时间。这份毕业设计是我过去几个月倾注了全部心血的作品,从构思、实验、调试到撰写,每一个环节都反复打磨。我深知时间宝贵,所以选择详细讲解,是希望能更完整、清晰地展示它的核心创新点、实现过程和验证结果,确保老师们能充分理解它的价值和我的努力。我完全理解并重视评审环节的意义,也做好了充分准备来听取各位老师的专业意见和批评。几个月的研究都坚持下来了,我怎么可能害怕老师们的点评呢?今天站在这里,正是抱着虚心学习、诚恳求教的态度而来。” “如果我的展示确实超时,影响了后续流程,烦请老师们随时示意,我会立刻调整。我非常期待并预留了充足的时间,希望能听到老师们宝贵的建议和深入的讨论。” “其次,关于您提到‘从发言和论文格式就能知道我的性格’。教授,我对此感到非常困惑和不安。学术研究和答辩的核心,难道不应该是作品本身的质量、逻辑的严谨性、数据的可靠性和结论的合理性吗?论文格式有明确的规范要求,我尽最大努力遵循了这些规范。如果格式上存在疏忽或不足,这属于技术性、规范性的问题,恳请老师们具体指出,我一定认真修改。但将格式问题或个人表达风格(如讲解时长)直接上升为对个人性格的评判,甚至以此作为质疑我学术态度和动机的依据,这让我感到非常不公平,也偏离了学术评议应有的客观和严谨原则。” “我尊重每一位评审老师的专业权威,也衷心希望能得到老师们对我的工作内容本身的专业指导和批评指正。任何基于研究本身的意见,无论多么尖锐,我都会认真聆听、反思并改进。但我恳请老师们,能将评议的焦点放在我的研究本身,而不是对我个人进行主观的推断或评价。谢谢各位老师。”
点赞 评论 收藏
分享
有担当的灰太狼又在摸鱼:零帧起手查看图片
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务