多机调度问题

class JobNode {
    friend void Greedy(JobNode*, int, int);
    friend void main(void);
public:
    operator int() const { return time; }
private:
    int ID, time;
};

class MachineNode {
    friend void Greedy(JobNode*, int, int);
public:
    operator int() const { return avail; }
private:
    int ID, avail;
};

template <class Type>
void Greedy(Type a[], int n, int m) {
    if (n <= m) {
        std::cout << "为每一个作业分配一个机器" << std::endl;
        return;
    }
    std::sort(a, a + n);
    MinHeap<MachineNode> H(m);
    MachineNode x;
    for (int i = 0; i < m; i++) {
        x.avail = 0;
        x.ID = i + 1;
        H.Insert(x);
    }
    for (int i = 0; i < n; i++) {
        H.DeleteMin(x);
        cout << "将机器" << x.ID << "从" << x.avail << "到" << x.avail + a[i].time << "的时间段分配给作业" << a[i].ID << endl;
        x.avail += a[i].time;
        H.Insert(x);
    }
}

最后更新: 2024年1月2日 21:37:12
创建日期: 2024年1月2日 19:47:42
回到页面顶部