博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构 Job
阅读量:5822 次
发布时间:2019-06-18

本文共 1640 字,大约阅读时间需要 5 分钟。

问题描述

n 项工作在等待队列中等待处理,编号为 1-n。 每个工作有个优先级 p

处理机同一时间只能处理一项工作。
处理机决定接下来处理哪一项工作的方式为:从队首取出一项工作 x,若等
待队列中没有工作的优先级比 x 的优先级大,那么处理 x,否则将 x 放回队尾,
继续寻找符合条件的工作。
现在请你求出编号为 m 的工作是第几个被处理的。

★数据输入
输入第一行为两个正整数 n(1<=n<=100),m(1<=m<=n),n 项工作, 待求的是第
m 项工作。
输入第二行 n 个数, 第 i 个数表示标号为 i 的工作的优先级 pi(1<=pi<=9)

★数据输出

输出为一个整数 t,编号为 m 的工作被解决的时间。

输入示例 输出示例
1 1
5
1

输入示例 输出示例
6 2
1 1 9 2 1 2
5

 

 

思路

  暴力

 

code(未验证)

1 #include 
2 #include
3 using namespace std; 4 #include
5 6 struct Node 7 { 8 Node(int _priority, int _index) 9 :priority(_priority),index(_index) {}10 int priority;11 int index;12 };13 14 int main()15 {16 int i;17 int num,index,buf;18 deque
q;19 scanf("%d %d",&num,&index);20 for(i=1; i<=num; i++)21 {22 scanf("%d",&buf);23 q.push_back(Node(buf,i));24 }25 for( i=1; !q.empty(); )26 {27 bool flag = true;28 for(deque
::iterator it = q.begin(); it!=q.end(); it++)29 {30 if((*it).priority > q.front().priority)31 {32 flag = false;33 break;34 }35 }36 if(flag)37 {38 if(q.front().index==index)39 {40 printf("%d\n",i);41 break;42 }43 q.pop_front();44 i++;45 }46 else // false47 {48 q.push_back(q.front());49 q.pop_front();50 }51 }52 53 54 return 0;55 }

 

转载于:https://www.cnblogs.com/cbattle/p/7672982.html

你可能感兴趣的文章
理解 QEMU/KVM 和 Ceph(3):存储卷挂接和设备名称
查看>>
一道算法题的一种O(n)解法
查看>>
ABP理论学习之NHibernate集成
查看>>
反射之动态创建对象
查看>>
隐马尔可夫模型学习小记——forward算法+viterbi算法+forward-backward算法(Baum-welch算法)...
查看>>
[MFC] CList
查看>>
[Android Pro] 完美Android Cursor使用例子(Android数据库操作)
查看>>
4 张 GIF 图帮助你理解二叉查找树
查看>>
c++中sizeof的分析
查看>>
线程间操作无效: 从不是创建控件的线程访问它的解决方法
查看>>
hdu 1236 排名
查看>>
【爆牙游记】黄山归来不看岳-日出。
查看>>
PHP面向对象深入研究之【继承】,减少代码重复
查看>>
RBAC权限管理
查看>>
此博客不再发表对自己私事的看法
查看>>
后台(20)——数据库连接池
查看>>
C# 开机自动启动程序
查看>>
导致Asp.Net站点重启的10个原因
查看>>
v7000数据恢复_MDisk重建数据恢复方法(北亚数据恢复)
查看>>
线分割平面与平面分割空间问题
查看>>