//5_1_1: 小孩报数问题,即约瑟夫问题 POJ3750
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
short i,N,w,s,cnt = 1,tag[64] = {0};
char c,name[64][15];
cin >> N;
for(i = 0;i < N;i ++) cin >> name[i];
cin >> w >> c >> s;
w --; //逻辑序和数组序的转化
while(cnt <= N)
{
i = 0;
while(1)
{
if(tag[w] == 0) i ++; //表示还没有出列
if(i == s)
{
tag[w] = cnt; //tag中保存了输出的顺序
cout << name[w] << endl;
w = (w + 1) % N;
break;
}
w = (w + 1) % N;
}
cnt++;
}
return 0;
}
/*测试结果:通过POJ3750检测
5
Xiaoming
Xiaohua
Xiaowang
Zhangsan
Lisi
2,3
Zhangsan
Xiaohua
Xiaoming
Xiaowang
Lisi
请按任意键继续. . .
*/
POJ3750 小孩报数问题
最新推荐文章于 2018-11-24 21:30:56 发布