算法分析与设计实验报告——实现汽车加油问题

目录:

  • 算法分析与设计实验报告——实现汽车加油问题
    • 一、 实验目的
    • 二、实验要求
    • 三、 实验原理
    • 四、 实验过程(步骤)
    • 五、 运行结果
    • 六、实验分析与讨论
    • 七、实验特色与心得
    • 附件一 实验过程(步骤)
    • 附件二 运行结果

一、 实验目的

掌握贪心算法的基本思想和解决问题的基本步骤,认识贪心算法和动态规划的联系与区别,对比解决同一问题的两种算法设计策略的时间复杂性。

二、实验要求

用c++语言实现用贪心算法解决汽车加油问题,分析时间复杂性,体会贪心算法解决问题的基本思路和步骤。

三、 实验原理

利用贪心算法每次使加油前行驶距离最大,一旦剩余油量不够行驶下一个加油站,就将油加满,从而最终到达目的地。先检测各加油站之间的距离,若发现其中有一个距离大于汽车加满油能跑的距离,则输出no solution
否则,对加油站间的距离进行逐个扫描,并且累加记录距离,尽量选择往远处走,不能走了,即当累加距离大于n时,就加油一次(sum++),最终统计出来的sum便是最少的加油站数

四、 实验过程(步骤)

见附件一
实验步骤、特点
重要源代码(流操作的部分要醒目的提示并注释)

五、 运行结果

见附件二

六、实验分析与讨论

这次试验的贪心算法比较简单,编程比较容易实现。应该注意的点就是需要首先判断有没有超过汽车行驶距离的加油站距离。

七、实验特色与心得

在贪心算法中,每次做出的选择仅在当前的状态下做出的最好的选择,即局部最优选择。然后再去解做出这个选择后产生的相应的子问题。不是每个问题用贪心算法都可以一定得到最优解,除非该问题具有贪心选择性质(所求问题的整体最优解可以通过一系列局部最优的选择而得到)和最优子结构性质。

附件一 实验过程(步骤)

#include <bits/stdc++.h>using namespace std;
//计算最小加油次数,加油站数组,最远能跑多远
int MinimumRefuelingTimes(vector<int> x, int n) {//次数总和int sum = 0;//加油站个数int klen = x.size();//判断有没有加油站之间的距离超过汽车所能行驶的最远距离for (int i = 0; i < klen; i++) {if (x[i] > n) {cout << "No Solution" << endl;return 0;}}//进行次数查找int s = 0;for (int i = 0; i < klen; i++) {s += x[i];if (s > n) {sum++;s = x[i];}}return sum;
}int main() {vector<int> GasStation;int n, k, len;cout << "请输入汽车加满油后可以行驶的里程数:n=";cin >> n;cout << "请输入旅途中的加油站数量:k=";cin >> k;cout << "请依次输入相邻加油站之间的距离:";for (int i = 0; i <= k; i++) {cin >> len;GasStation.push_back(len);}int mintimes = MinimumRefuelingTimes(GasStation, n);if (mintimes)cout << "最少加油次数为:" << mintimes << endl;return 0;
}

附件二 运行结果

算法分析与设计实验报告——实现汽车加油问题相关推荐

  1. 算法分析与设计实验报告 ——二分搜索程序算法的实现

    算法分析与设计实验报告 --二分搜索程序算法的实现 实验目的及要求 1.理解分治算法的概念和基本要素: 2.理解递归的概念: 3.掌握设计有效算法的分治策略: 4.通过二分搜索技术学习分治策略设计技巧 ...

  2. 算法分析与设计实验报告——二分搜索算法的实现

    算法分析与设计实验报告--二分搜索算法的实现 目录: 算法分析与设计实验报告--二分搜索算法的实现 一. 实验目的 二.实验要求 三. 实验原理 四. 实验过程(步骤) 五. 运行结果 六.实验分析与 ...

  3. 中北大学算法分析与设计实验报告一(BF算法)

    中北大学算法分析与设计实验报告一(BF算法) 1.实验名称 实验一 算法基础实验:数理基础与串匹配程序设计 2.实验目的 以字符串匹配问题为例,结合C等编程语言和链表.堆.栈等数据结构知识,基于BF算 ...

  4. 算法分析与设计实验报告

    计算机算法分析与设计实验报告 实验一:递归回溯 阶乘(Factorial) #include<iostream> using namespace std; int factorial(in ...

  5. 中北大学算法分析与设计实验报告六(最大团问题)

    中北大学算法分析与设计实验报告六(最大团问题) 1.实验名称 实验六 回溯与分支限界算法实验 2.实验目的 题目:最大团问题 强化学生利用回溯算法和优化处理实际问题的能力. 3.训练知识点集群 (1) ...

  6. 算法分析与设计实验报告三——动态规划算法

    一.实验目的 掌握动态规划方法贪心算法思想 掌握最优子结构原理 了解动态规划一般问题 二.实验内容 编写一个简单的程序,解决0-1背包问题.设N=5,C=10,w={2,2,6,5,4},v={6,3 ...

  7. 南京邮电大学c语言实验报告4,南京邮电大学算法设计实验报告——动态规划法...

    <南京邮电大学算法设计实验报告--动态规划法>由会员分享,可在线阅读,更多相关<南京邮电大学算法设计实验报告--动态规划法(12页珍藏版)>请在人人文库网上搜索. 1.实 验 ...

  8. 2019春第二次课程设计实验报告

    2019春第二次课程设计实验报告 一.实验项目名称: 贪吃蛇游戏编写: 二.实验项目功能描述: 这个实验主要是实现游戏的正常运行,实现的目标是对小蛇移动的控制, 同时对小蛇数据的保存,如何实现转弯的效 ...

  9. 2109春第一次课程设计实验报告

    2019春第一次课程设计实验报告 一.实验项目名称: 飞机游戏的编写 二.实验项目功能描述: 这个实验主要是实现游戏的正常运行,实现控制飞机的移动功能,增加其实用度, 同时还实现发射子弹和出现敌机的操 ...

最新文章

  1. nullptr和NULL
  2. 关于封装的一个小问题和TA的例子
  3. UI设计灵感|逻辑感十足的数据可视化界面设计
  4. UI设计师缺乏灵感,看看这些可以临摹的网站架构!
  5. 添加WSS3.0中文模板
  6. WdatePicker日历控件用法
  7. Redis 不安全临时文件漏洞
  8. css3中的过度transition与动画animation以及字体@font-face
  9. TextMate里添加Theme
  10. Linux中网卡的命名规则
  11. Native Boot 从一个 VHD 引导系统的相关说明
  12. MongoDB从入门到高级的实战操作
  13. python:16进制转2进制
  14. Think twice, code once.
  15. 腾讯优图实验室日常实习生招聘
  16. 背阔肌(06):T杠俯身划船
  17. Centos7 连接wifi (PEAP)
  18. 博时基金数据开发面经
  19. {} == {} 结果为什么是false?
  20. 组态王和plc之间如何建立通讯?

热门文章

  1. pytorch计算FLOPs
  2. SurfaceView和View的区别
  3. 【深度学习】深度学习如何影响运筹学?
  4. 电脑win10系统如何开定位服务器,Win10系统定位功能如何打开 Win10系统定位打开方法...
  5. 心动不如行动, 盘点职场实干者的10大标志
  6. 从Workflowy到印象笔记
  7. 北京住房公积金联名卡政策问答
  8. DIV+CSS实现网页爱心图案
  9. Qt QLineEdit 信号函数总结
  10. C#卸载程序需要密码/防卸载功能