Uva 133 - The Dole Queue

来源:互联网 发布:java calendar. Date 编辑:程序博客网 时间:2024/06/05 16:12

难度不是很大,思路方面不是特别难,但是对细节方面还是有一定要求的,这个题自己的思路我感觉还是比较中规中矩,技巧性不大,可能是因为目前所掌握的各种算法技巧不足,以后要多在这方面下功夫。

#include <stdio.h>#include <string.h>#include <stdlib.h>int main(){    int m,n,k,i,j,l,r,s,t,ka,ma,ia,ja;    int a[21],b[21];    while( scanf("%d%d%d",&n,&k,&m) != EOF )    {        if(n==0 && k==0 && m==0)            break;         ia=1;   ja=n;  t=0;        for(i=1; i<=20; i++)            a[i]=b[i]=i;        while(1)        {            r=0;            for(i=1; i<=n; i++)                if(a[i]>=1 && a[i]<=n)                    r=1;            if(r == 0)                break;            ka=k;  ma=m;            for(i=ia; ;ia++,i++)            {                if(a[i]<1 || a[i]>n)                {                    if(i == n)                       { ia=0;  i=0; }                    continue;                }                ka--;                if(ka == 0)                {                    if(t != 0)                        printf(",");                    t++;                    printf("%3d",a[i]);                    break;                }                if(i == n)                { ia=0;  i=0; }            }            for(j=ja; ;ja--,j--)            {                if(b[j]<1 || b[j]>n)                {                    if(j == 1)                        { j=n+1; ja=n+1;}                    continue;                }                ma--;                if(ma == 0)                {                    if(b[j] == a[i])                        break;                    else                    {  printf("%3d",b[j]);  break;   }                }                if(j == 1)                    { j=n+1; ja=n+1;}            }            a[i]=a[j]=b[i]=b[j]=100;        }        printf("\n");    }    return 0;}


0 0