• 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
    
    }

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


  • 相关阅读:
    Exp7 网络欺诈防范
    Exp6 信息搜集与漏洞扫描
    Exp4 恶意代码分析
    Exp2 后门原理与实践
    PC平台逆向破解实验报告
    See You Again——我最后的汇编程序
    表格标签
    ansible环境搭建
    OSPF_1
    Linux的文件管理(8-27)
  • 原文地址:https://www.cnblogs.com/java20130723/p/3212226.html
Copyright © 2020-2023  润新知