您的位置:首页 > 产品设计 > UI/UE

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

); 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; }

[p] 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: