問題キューラウンドロビン・スケジューリングの典型的な例--cpu

1  // EG入力100 5
 2  //       P1 150
 。3  //       P2 80
 。4  //       P3 200である
 。5  //       P4 350
 。6  //       P5 20である
。7の#include <入出力ストリーム>
 。8の#include < 文字列 >
 。9の#include <キュー>
 10  使用して 名前空間STD;
 11  int型のmain(){
 12は     INT N-; // タスクの数
13である     INT時間; // タイム・スライス
14      CIN >> N-; 
 15     >> CIN 時間、
 16       P [ 100000 ]; // タスク名
17。     INT T [ 100000 ]; 
 18である     文字列、PP
 。19      キュー< ストリング > Q;
 20である     ため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である     一方で(!{Q.empty())
 27          PP = q.front();    
 28          IF(T [PPの[ 1 ] - ' 0 ' ] <=時間){ //は短い時間スライスを要し
29              = timeansを+ Tのtimeans [PPの[ 1 ] - ' 0 ' ]; // タイマープラス時間
30              q.pop(); //は、デキュー完了後
31である              << << PP COUT '  ' << timeans < < ENDL; 
 32          }
 33が          { // 処理された時間スライスはより大きい
34             +時間= timeansのtimeans; // タイマープラス時間
35              T [PPの[ 1 ] - ' 0 ' ] - =時間; // このタスクで更新             
36              q.pop(); // デキュー
37 [              q.push(PP); 
 38である         }
 39      }
 40      リターン 0 ;
 41です }

 

おすすめ

転載: www.cnblogs.com/TYXmax/p/10988817.html