uva - 133 The Dole Queue(成环状态下的循环走步方法)
2014-09-18 18:05
405 查看
类型:循环走步
#include <iostream> #include <sstream> #include <cstdio> #include <cstring> #include <cmath> #include <string> #include <vector> #include <set> #include <cctype> #include <algorithm> #include <cmath> #include <deque> #include <queue> #include <map> #include <stack> #include <list> #include <iomanip> using namespace std; #define INF 0x7fffffff #define maxn 1010 typedef unsigned long long ull; int arr[maxn]; int N, k, m; //d也能表示顺时针还是逆时针,顺时针-1,逆时针1 //注意此处的算法 int go(int t, int p, int d) { 33 while(t--) 34 { 35 do{ 36 /// 37 p = (p+d+N-1)%N+1; 38 } 39 while(!arr[p]); 40 } return p; } int main() { while(scanf("%d%d%d", &N, &k, &m) && (N+k+m)) { memset(arr, 0, sizeof(arr)); for(int i = 1; i <= N; i++) arr[i] = i; 52 int left = N;//剩下的人数 53 int p1 = 0, p2 = N+1;//位置标记 while(left) { p1 = go(k, p1, 1); p2 = go(m, p2, -1); arr[p1] = arr[p2] = 0; //注意此处的输出优化 printf("%3d", p1); left--; if(p1 != p2) { printf("%3d", p2); left--; } if(left) printf(","); else printf("\n"); } } return 0; }
相关文章推荐
- uva 133 The Dole Queue(循环队列)
- uva 133 - The Dole Queue
- UVA133- The Dole Queue
- UVa 133 - The Dole Queue
- uva 133 - The Dole Queue
- UVA133:The Dole Queue
- UVa 133 The Dole Queue
- uva 133 The Dole Queue 双向约瑟夫环 模拟实现
- The Dole Queue UVA133
- UVa 133 - The Dole Queue
- uva-133 The Dole Queue
- uva 133 - The Dole Queue
- UVa 133 - The Dole Queue
- uva-133 - The Dole Queue
- UVa 133 - The Dole Queue
- uva133 The Dole Queue
- uva 133 - The Dole Queue
- Uva 133 - The Dole Queue
- uva 133 The Dole Queue
- uva 133 The Dole Queue 双向约瑟夫环 模拟实现