队列的典型实例问题——CPU时间片轮转调度
Posted tyxmax
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了队列的典型实例问题——CPU时间片轮转调度相关的知识,希望对你有一定的参考价值。
1 //eg输入5 100 2 // p1 150 3 // p2 80 4 // p3 200 5 // p4 350 6 // p5 20 7 #include<iostream> 8 #include<string> 9 #include<queue> 10 using namespace std; 11 int main() 12 int n;//任务数 13 int time;//时间片 14 cin>>n; 15 cin>>time; 16 string p[100000];//任务名 17 int t[100000]; 18 string pp; 19 queue<string>q; 20 for(int i=1;i<=n;i++)//输入各个任务和用时 21 cin>>p[i]; 22 q.push(p[i]); 23 cin>>t[i]; 24 25 int timeans=0;//计时器 26 while(!q.empty()) 27 pp=q.front(); 28 if(t[pp[1]-‘0‘]<=time)//耗时小于等于时间片 29 timeans=timeans+t[pp[1]-‘0‘];//计时器加上这次的时间 30 q.pop();//完成后出队 31 cout<<pp<<‘ ‘<<timeans<<endl; 32 33 else//耗时大于时间片 34 timeans=timeans+time;//计时器加上这次的时间 35 t[pp[1]-‘0‘]-=time;//更新这个任务的用时 36 q.pop();//出队 37 q.push(pp); 38 39 40 return 0; 41
以上是关于队列的典型实例问题——CPU时间片轮转调度的主要内容,如果未能解决你的问题,请参考以下文章