• uva 12100 Printer Queue 优先级队列模拟题 数组模拟队列


    题目很简单,给一个队列以及文件的位置,然后一个一个检查,如果第一个是优先级最高的就打印,否则放到队列后面,求所要打印的文件打印需要花费多长时间。

    这里我用数组模拟队列实现,考虑到最糟糕的情况,必须把数组开到maxn*maxn。另外当所要打印的文件优先级不是最高的时候也需要排列到后面。

    0.016s。

    代码:

    #include <cstdio>
    const int maxn = 101;
    int t, n, m, time;
    int q[maxn*maxn];
    
    int print() {
    	int front = 0, rear = n;
    	while (1) {
    		int max = q[front];
    		for (int i = front; i < rear; i++)
    			if (q[i] > max)
    			{
    				if (front == m)
    					m = rear;
    				q[rear++] = q[front++];
    				break;
    			}
    			else if (i == rear - 1)
    			{
    				time++;
    //				printf("%d %d
    ", time, q[front]);
    				if (front == m)
    					return time;
    				front++;
    			}
    	}//while
    }
    
    int main() {
    	scanf("%d", &t);
    	while (t--) {
    		time = 0;
    		scanf("%d%d", &n, &m);
    		for (int i = 0; i < n; i++)
    			scanf("%d", &q[i]);
    		printf("%d
    ", print());
    	}//while
    
    }


    这里是水水题的水果君,转载请注明出处。


  • 相关阅读:
    自然二进制与格雷码的转换
    状态机小结
    FSM的几种策略
    跨越鸿沟:同步世界中的异步信号
    边沿检测技术
    门控时钟和时钟使能
    ALTERA器件中复位电路实现之-异步复位同步化
    同步复位
    Altera USB Blaster 仿真器(EPM240仿制版
    五、裸机烧写
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3194122.html
Copyright © 2020-2023  润新知