优先级调度:优先级高的任务先执行。 您所在的位置:网站首页 bornthiswaybadhop 优先级调度:优先级高的任务先执行。

优先级调度:优先级高的任务先执行。

2023-12-28 22:20| 来源: 网络整理| 查看: 265

题目:

输入5组优先级任务。如下图所示

输入代表的意义是:

 任务ID,优先级值(值越大,优先级越高),开始时间,持续时间。共5组。

输出代表的意思:

 任务ID,执行持续时间,即整个任务执行的顺序。

思路:在做这类题目时,在时间轴上先画出优先级高的时间线,再画优先级低的时间线,当优先级低的时间线被优先级高的时间线挡住的时候,依次往后延续,直到占满它的时间需求。

#include #include #include using namespace std; struct task { int ID; int priority; int start; int time; }; bool compare(const task& task1, const task& task2) { return task1.priority>task2.priority; } int main() { vector vec(5); int coord[300] = { 0 }; int a, b, c, d; for (int i = 0; i < 4; ++i) { scanf_s("[%d.%d.%d.%d]|", &a, &b, &c, &d); vec[i].ID = a; vec[i].priority = b; vec[i].start = c; vec[i].time = d; } scanf_s("[%d.%d.%d.%d]", &a, &b, &c, &d); vec[4].ID = a; vec[4].priority = b; vec[4].start = c; vec[4].time = d; sort(vec.begin(), vec.end(), compare); for (int i = 0; i < 5; ++i) { int begintime = vec[i].start; int spend = 0; for (int j = begintime;; ++j) { if (coord[j] == 0){ coord[j] = vec[i].ID; spend++; if (spend == vec[i].time) break; } } } int pre = -1; for (int i = 0;; ++i) { if (i == 199) { printf("%d.%d", coord[i], i - pre); break; } if (coord[i] == coord[i + 1]) { } else { printf("%d.%d|", coord[i], i - pre); pre = i; } } return 0; }



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有