又一次用模拟链表水过,和约瑟夫环一样.......所以不注释了。
代码:
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <vector>
#include <set>
#include <queue>
#include <stack>
#define MAX 1050
#define INF 0x7FFFFFFF
# define eps 1e-5
using namespace std;
struct Child
{
char name[20];
int pre,next;
} child[100];
int main()
{
int n,i,w,s;
scanf("%d",&n);
for(i=1; i<=n; i++)
{
cin >> child[i].name;
}
scanf("%d,%d",&w,&s);
child[1].pre = n;
for(i=2; i<=n; i++)
{
child[i].pre = i-1;
}
child[n].next = 1;
for(i=1; i<=n-1; i++)
{
child[i].next = i+1;
}
int num = 0;
while(child[w].next != w)
{
num++;
if(num == s)
{
num = 0;
cout << child[w].name << endl;
child[child[w].pre].next = child[w].next;
child[child[w].next].pre = child[w].pre;
}
w = child[w].next;
}
cout << child[w].name << endl;
return 0;
}