最坏适应分配算法c语言
时间: 2023-07-26 18:10:16 浏览: 62
最坏适应分配算法是一种贪心算法,用于解决任务分配问题。以下是用C语言实现最坏适应分配算法的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_TASKS 100
#define MAX_WORKERS 100
int tasks[MAX_TASKS]; // 任务所需时间数组
int workers[MAX_WORKERS]; // 工人完成任务的时间数组
// 比较函数,用于快速排序
int cmp(const void* a, const void* b) {
return *(int*)b - *(int*)a;
}
// 最坏适应分配算法
void worstFitAllocation(int n, int m) {
// 对任务所需时间数组进行排序,从大到小
qsort(tasks, n, sizeof(int), cmp);
// 对工人完成任务的时间数组进行初始化为0
for (int i = 0; i < m; i++) {
workers[i] = 0;
}
// 遍历任务所需时间数组,按照最坏适应分配算法分配给工人
for (int i = 0; i < n; i++) {
int maxTime = -1;
int maxIndex = -1;
for (int j = 0; j < m; j++) {
if (workers[j] > maxTime) {
maxTime = workers[j];
maxIndex = j;
}
}
workers[maxIndex] += tasks[i];
}
// 输出每个工人完成任务的时间
for (int i = 0; i < m; i++) {
printf("Worker %d: %d\n", i + 1, workers[i]);
}
}
int main() {
int n, m;
printf("Enter the number of tasks: ");
scanf("%d", &n);
printf("Enter the number of workers: ");
scanf("%d", &m);
printf("Enter the time required for each task:\n");
for (int i = 0; i < n; i++) {
scanf("%d", &tasks[i]);
}
worstFitAllocation(n, m);
return 0;
}
```
示例输出:
```
Enter the number of tasks: 5
Enter the number of workers: 3
Enter the time required for each task:
4 5 2 3 1
Worker 1: 6
Worker 2: 5
Worker 3: 4
```
在上面的示例中,假设有5个任务,需要分配给3个工人完成。输入每个任务所需时间后,程序便会按照最坏适应分配算法将它们分配给工人,并输出每个工人完成任务的时间。