⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lptschedule.cpp

📁 datastucutre and algorithms, application, in C
💻 CPP
字号:
   
// output LPT schedules

#include <iostream>
#include "minHeap.h"
#include "heapSort.h"
#include "lptNodes.h"

using namespace std;

void makeSchedule(jobNode a[], int n, int m)
{// Output an m machine LPT schedule for the jobs a[1:n].
   if (n <= m)
   {
      cout << "Schedule each job on a different machine." << endl;
      return;
   }

   heapSort(a, n); // in ascending order

   // initialize m machines and the min heap
   minHeap<machineNode> machineHeap(m);
   for (int i = 1; i <= m; i++)
      machineHeap.push(machineNode(i, 0));

   // construct schedule
   for (int i = n; i >= 1; i--)
   {// schedule job i on first free machine
      machineNode x =  machineHeap.top();
      machineHeap.pop();
      cout << "Schedule job " << a[i].id 
           << " on machine " << x.id << " from " << x.avail
           << " to " << (x.avail + a[i].time) << endl;
      x.avail += a[i].time;  // new available time for this machine
      machineHeap.push(x);
   }
}

void main(void)
{
   jobNode a[11];
   int n = 10;
   for (int i = 1; i <= n; i++)
   {
      a[i].id = i;
      a[i].time = 2 * i * i;
   }
   makeSchedule(a, 10, 3);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -