用C++最小化加权完成时间的调度 输入:作业的数量n,每个作业j的编号ij,每个作业j的权值为wj,每个作业j的处理时间tj 输出:作业的处理顺序以及最小化作业的总加权完成时间
时间: 2024-02-13 15:02:22 浏览: 29
以下是用C++实现的最小化加权完成时间的调度程序:
```c++
#include<bits/stdc++.h>
using namespace std;
struct JOB {
int id;
int weight;
int processing_time;
};
bool cmp(const JOB& a, const JOB& b) {
return a.processing_time < b.processing_time;
}
int main() {
int n;
cin >> n;
vector<JOB> jobs(n);
for (int i = 0; i < n; i++) {
cin >> jobs[i].id >> jobs[i].weight >> jobs[i].processing_time;
}
sort(jobs.begin(), jobs.end(), cmp);
int weighted_completion_time = 0;
int completion_time = 0;
for (int i = 0; i < n; i++) {
completion_time += jobs[i].processing_time;
weighted_completion_time += jobs[i].weight * completion_time;
}
cout << "作业的处理顺序为: ";
for (int i = 0; i < n; i++) {
cout << jobs[i].id << " ";
}
cout << endl;
cout << "最小化作业的总加权完成时间为: " << weighted_completion_time << endl;
return 0;
}
```
在这个程序中,我们首先定义了一个`JOB`结构体,包含作业的编号、权值和处理时间。然后,我们读入所有作业的信息,并按照处理时间对它们进行排序。接下来,我们使用SPT规则处理作业,并计算加权完成时间和总加权完成时间。最后,我们输出作业的处理顺序和最小化作业的总加权完成时间。
请注意,这个程序没有对输入进行错误检查,如果输入格式不正确或者作业的数量为0,程序可能会出错。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)