数据结构的一道题目,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;
}