数据结构的一道题目,n的范围很小,所以直接暴力就行
#include<stdio.h>
#include<string.h>
int point[100];
int main()
{
int n,k,m,ipos,jpos,ks,ms,top,leap;
while(scanf("%d%d%d",&n,&k,&m)&&(n||m||k))
{
top=n;
memset(point,0,sizeof(point));
ipos=0;jpos=n+1;
while(top>0)
{
ks=k;ms=m;leap=0;
while(ks--)
{
ipos++;leap++;
if(ipos>n)ipos=1;
if(point[ipos]==1)ks++;
}
while(ms--)
{
jpos--;
if(jpos==0)jpos=n;
if(point[jpos]==1)ms++;
}
printf("%3d",ipos);
point[ipos]=1;
top--;
if(ipos!=jpos)
{
printf("%3d",jpos);
point[jpos]=1;
top--;
}
if(top)
printf(",");
}
printf("\n");
}
return 0;
}