贪心算法实践:优化机器任务调度
需积分: 14 54 浏览量
更新于2024-09-13
收藏 92KB DOCX 举报
在本篇上机报告中,学生李林华通过《算法设计与实现》课程的学习,探讨了贪心算法的应用。主要针对两个实际问题进行了解题实践:
1. 题目1:机器调度优化
题目要求安排n个独立作业(由用户自定义)到三台机器M1、M2和M2上处理,每个作业对应的时间分别为{2, 14, 4, 16, 6, 5, 3}。贪心法的核心思想是每次选择局部最优解,以期望达到全局最优。具体步骤是首先对任务时间进行排序,然后按照这个顺序将任务分配给当前剩余时间最少的机器。通过编写C++代码,使用`sort`函数对任务进行排序,`min`函数确定剩余机器中的最小时间,最后将任务依次添加到相应的机器上。
```cpp
#include<stdio.h>
#define max10
// 对数组进行排序
void sort(int a[], int b) {
// ...
}
// 返回剩余机器中时间最小的索引
int min(int a[3]) {
// ...
}
int main() {
int machine[3] = {0, 0, 0}; // 初始化机器时间
// ...
for (i = m - 1; i > 0; i--) {
n = min(machine); // 获取当前剩余时间最少的机器
machine[n] += work[i]; // 将任务添加到对应机器
}
printf("各个机器处理任务后的剩余时间:\n");
// 输出机器时间
// ...
}
```
通过这种贪心策略,李林华实现了机器调度,使得机器处理总时间最短。
2. 题目2:未详细描述
报告中提到第二个题目但并未给出详细内容,可能是类似的机器调度问题或者另一个应用贪心算法的实际情境。由于具体内容未知,这里无法提供详细的解题步骤。
这份报告展示了如何将贪心法理论应用于实际编程问题中,通过代码实现优化机器调度,体现了贪心算法在解决这类问题时的有效性和简洁性。通过学习和实践,学生加深了对贪心算法的理解,并掌握了如何在实际编程中运用这一算法技巧。
2018-12-05 上传
2020-05-23 上传
2020-06-08 上传
2020-05-23 上传
2020-05-23 上传
2020-05-24 上传
2015-05-20 上传
010011000111
- 粉丝: 0
- 资源: 4
最新资源
- Android圆角进度条控件的设计与应用
- mui框架实现带侧边栏的响应式布局
- Android仿知乎横线直线进度条实现教程
- SSM选课系统实现:Spring+SpringMVC+MyBatis源码剖析
- 使用JavaScript开发的流星待办事项应用
- Google Code Jam 2015竞赛回顾与Java编程实践
- Angular 2与NW.js集成:通过Webpack和Gulp构建环境详解
- OneDayTripPlanner:数字化城市旅游活动规划助手
- TinySTM 轻量级原子操作库的详细介绍与安装指南
- 模拟PHP序列化:JavaScript实现序列化与反序列化技术
- ***进销存系统全面功能介绍与开发指南
- 掌握Clojure命名空间的正确重新加载技巧
- 免费获取VMD模态分解Matlab源代码与案例数据
- BuglyEasyToUnity最新更新优化:简化Unity开发者接入流程
- Android学生俱乐部项目任务2解析与实践
- 掌握Elixir语言构建高效分布式网络爬虫