import java.util.Arrays; public class MultiMachineScheduling { public static void multiMachineScheduling(int[] processingTimes, int m) { int n = processingTimes.length; int[] machines = new int[m]; Arrays.fill(machines, 0); if (m >= n) { for (int i = 0; i < n; i++) { machines[i] = processingTimes[i]; } } else { Arrays.sort(processingTimes); for (int i = n - 1; i >= 0; i--) { int minIndex = findMinIndex(machines); machines[minIndex] += processingTimes[i]; } } System.out.println("作业调度方案:"); for (int i = 0; i < m; i++) { System.out.println("M处理时间" + (i + 1) + ": " + machines[i]); } } private static int findMinIndex(int[] machines) { int minIndex = 0; int minValue = machines[0]; for (int i = 1; i < machines.length; i++) { if (machines[i] < minValue) { minIndex = i; minValue = machines[i]; } } return minIndex; } public static void main(String[] args) { int[] processingTimes = {2, 14, 4, 16, 6, 5, 3}; int m = 3; multiMachineScheduling(processingTimes, m); } }
使用贪心算法求解多机调度问题
最新推荐文章于 2024-08-15 22:39:23 发布