今天上午写了一遍,AC了,然后把代码给删了。所以刚才又写了一遍,不算难。
#include<stdio.h>
int a[35];
int i, j; //定义全局变量,方便进行选人操作
void pick(int x, int y, int z)
{
int k;
int m = 0,n = 0;
while(1) //顺时针开始选数
{
if(a[i] != 0)
m++;
if(m == y)
break;
i++;
if(i == x)
i = 0;
}
while(1) //逆时针开始选数
{
if(a[j] != 0)
n++;
if(n == z)
break;
j--;
if(j == -1)
j = x - 1;
}
a[i] = a[j] = 0; //把选出来的人全部清为0
if(i == j)
printf("%3d", i + 1);
else
printf("%3d%3d", i + 1, j + 1);
for(k = 0; k < x; k++) //判断是否全部被选上,只要有一个不是0的就选择一次
if(a[k] == 1)
{
printf(",");
return pick(x, y, z);
}
}
int main()
{
int n, k, m;
while(scanf("%d%d%d", &n, &k, &m) == 3&& n)
{
for(i = 0; i < n; i++) //把数组全部赋值为1
a[i] = 1;
i = 0;
j = n - 1;
pick(n, k, m);
printf("\n");
}
return 0;
}