Uva 133:The Dole Queue

Posted xietx1995

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Uva 133:The Dole Queue相关的知识,希望对你有一定的参考价值。

题目传送门:Uva 133:The Dole Queue

#include <stdio.h>
int n, k, m;
int a[25];

int go(int position, int direction, int step) // direction为方向

    int ct = 0;
    while (true)
    
        if (a[position] != 0)
        
            ++ct; // 不为0,计数器加1
            if (ct == step) break; // 找到step个数后停止
        
        position += direction;
        if (position > n) position = 1;
        if (position < 1) position = n;
    
    return position;


int main()

    while (3 == scanf("%d%d%d", &n, &k, &m) && n)
    
        for (int i = 1; i <= n; ++i)
            a[i] = i;

        int left = n, p1 = 1, p2 = n;

        while (left > 0)
        
            p1 = go(p1, 1, k);
            p2 = go(p2, -1, m);
            printf("%3d", a[p1]); // 先输出一个
            --left;
            if (p1 != p2) // 如果p1!=p2再输出另一个
            
                printf("%3d", a[p2]);
                --left;
            
            a[p1] = a[p2] = 0;
            if (left) // 如果还有剩余,则输出一个逗号
                printf(",");
        
        putchar('\\n');
    
    return 0;

以上是关于Uva 133:The Dole Queue的主要内容,如果未能解决你的问题,请参考以下文章

[UVa 133]The Dole Queue 救济金发放

The Dole queue,Uva 133

Uva133 - The Dole Queue

uvaoj 133 - The Dole Queue(逻辑,环形队列数数)

uva133-S.B.S.

救济金发放(UVa133)