pku_3125_Printer Queue模拟

//题目提示用队列来解题,但是其实不用
//要的是一个数组储存优先值,优先值最大的元素使用后赋值为0,不必用队列来删除它
//循环直到 MyJobPosition 成为优先值最大的元素,使用它,然后退出循环,打印time
//
#include<iostream>
#include<queue>
using namespace std;

const int maxn=105;
int jobs[maxn];

int main (){
    int c;
    cin>>c;
    while(c--){

        int num,mjpos,flag,time=0;
        cin>>num>>mjpos;
        for(int i=0;i<num;i++)
            cin>>jobs[i];

        for(int i=0;;i++){                         

            if(i==num)                              /*如果循环到数组边界了,从头再来*/
                i=0;
            flag=1;
            for(int j=i+1;j!=i;j++)                 
            {
                if(j==num)
                {
                    j=-1;
                    continue;                          /*循环查找是否为优先值最大的元素*/
                  }
                if(jobs[j]>jobs[i])
                {flag=0;break;}
            }

            if(flag)
            {
                time++;
                jobs[i]=0;
                if(i==mjpos)
                    break;
            }
        }
        cout<<time<<endl;
    }
    return 0;
}

题目链接:http://poj.org/problem?id=3125

posted @ 2014-01-20 15:33  neverchanje  阅读(158)  评论(0编辑  收藏  举报