UVA133 - The Dole Queue

#include
using namespace std;
int n, k, m, a[28], l, g1, g2;
int go(int p,int d,int t){//p是人,d是方向,t是人数
	while(t--){//执行t次 
		do{(p=(p+d+n-1)%n+1);}while(a[p]==0);//删人操作
	}
	return p;
}
int main() {
	while (scanf("%d%d%d", &n, &k, &m) == 3 && n) {
		for(int i=1;i<=n;i++)a[i]=i;
		l=n;g1=n;g2=1;//初始设定
		while(l){
			g1=go(g1,1,k);
			g2=go(g2,-1,m);
			printf("%3d",g1);
			l--;
			if(g1!=g2){
				printf("%3d",g2);
				l--;
			}
			a[g1]=a[g2]=0;
			if(l)printf(",");//一轮过后输出“,”
		} 
		printf("\n");
	}
	return 0;
}

你可能感兴趣的:(UVA,c++,算法)