什么是贪心算法,并用java语言举出常见的贪心
时间: 2023-05-28 16:03:14 浏览: 111
贪心算法是一种基于贪心策略的算法,它在每一步选择中都采取当前状态下最优的选择,最终得到全局最优解。贪心算法通常用于求解最优化问题,如最短路径、最小生成树、背包问题等。
举个常见的贪心例子,假设有n个任务,每个任务有一个开始时间和结束时间,现在要将这些任务分配给m个人,每个人同时只能做一个任务,问最少需要多少个人才能完成所有任务?
Java代码实现如下:
```
public int minNumberOfPeople(int n, int[][] tasks) {
Arrays.sort(tasks, (a, b) -> a[1] - b[1]); // 将任务按结束时间排序
int count = 1; // 至少需要一个人
int endTime = tasks[0][1]; // 第一个任务的结束时间
for (int i = 1; i < n; i++) {
if (tasks[i][0] >= endTime) { // 如果当前任务开始时间晚于等于上一个任务结束时间,可以由同一个人完成
endTime = tasks[i][1]; // 更新结束时间
} else { // 否则需要另外一个人来完成任务
count++;
endTime = tasks[i][1];
}
}
return count;
}
```
该算法的思路是按照任务的结束时间从小到大排序,然后依次遍历任务,如果当前任务的开始时间晚于等于上一个任务的结束时间,说明可以由同一个人完成,更新结束时间为当前任务的结束时间,否则需要另外一个人来完成任务。最终得到的count即为最少需要多少个人才能完成所有任务。
阅读全文