虚拟汽车加油问题——算法设计与分析(C实现)

news2024/11/26 11:44:46

   

目录

一、问题描述

二、问题剖析

三、代码实现

四、结果验证


一、问题描述

       问题描述:一辆虚拟汽车加满油后可行驶n km。旅途中有若干加油站。设计一个有效算法,指出应该在那些加油站停靠加油,使沿途加油次数最少。并证明算法的能产生一个最优解。

       算法设计:对于给定的n和k个加油站位置,计算最少加油次数。

       数据输入:有文件input.txt给出输入数据。第1行有两个正整数n 和 k ,表示汽车加满油后可行驶n km,且旅途中有k 个加油站。接下来的1行中有K+1个整数,表示第k个加油站与敌k-1个加油站之间的距离。第0个加油站表示出发地点,汽车已加满油。第k+1个加油站表示目的地。

       结果输出:将计算的最少加油次数输出到文件output.txt。如果无法到达目的地,则输出“No Solution”。

//input.txt  输入内容

7 7

1 2 3 4 5 1 6 6

//output.txt  结果输出

二、问题剖析

该部分为什么会有0~K+1个加油站呢,下面的图可以很好帮助了解这个题目所需要解决的问题:

基本思想:       

首先需要简单了解贪心算法的基本要素:最优子结构性质、贪心选择性质

根据一个贪心选择性,每当到达一个加油站的时候,都要进行一次判断,看看剩余的油量能不能维持到下一个加油站。也就是说如果剩余的油量咱们能到达下一站的话,就不加油了,继续前进;如果不行的话,更新邮箱的油量,加满

三、代码实现

#include<stdio.h>

int main()
{
  int n,k;
  
  freopen("input.txt","r",stdin);
  freopen("output.txt","w",stdout);
  
  scanf("%d %d",&n,&k);//从文件夹中取出加满油可行使的公里数n,和加油站数量k 

  int x[k+1];
  for(int i=0;i<k+1;i++) //从文件中取出两加油站之间的距离 
  {
  	scanf("%d",&x[i]);
  }
  
  int sum=0, count=0; // 加油后行驶总距离  加油次数

  for (int i = 0; i < k + 1; i++)//如果有两站之间的距离超过了汽车加满油后行驶的距离,输出No Solution 
  {
    if(x[i]>n)
    {
      printf("No Solution!");
      return 0;
    }
  }

  sum = x[0];//从第0个加油站加满油出发 

  for (int i = 1; i < k + 1; i++)
  {
    sum+=x[i];
    if (sum >= n) //如果剩余油量不够行驶下一路段 ,则加一次油 
    {
      count++;
      sum = x[i-1];
    }
  }

  printf("%d",count);

  return 0;
}

四、结果验证

那我们现在来检验一下代码的正确性吧~

(1)首先在程序同路径下新建两个文件 input.txt      output,txt

(2)在input.txt文件中输入相应数据

(3)将代码运行成功

(4)在output.txt文件中检测最终结果

 

这样代码就检验完毕啦~大家还可以更具需要进行一定的修改,使程序更加完善

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/513573.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安卓Webview网页秒开策略探索

1 人赞同了该文章 痛点是什么&#xff1f; 网页加载缓慢&#xff0c;白屏&#xff0c;使用卡顿。 为何有这种问题&#xff1f; 1.调用loadUrl()方法的时候&#xff0c;才会开始网页加载流程 2.js臃肿问题 3.加载图片太多 4.webview本身问题 webiew是怎么加载网页的呢&…

品优购项目学习记录--01公共模块制作

文章目录 一、品优购项目规划1.1 开发工具以及技术栈1.1.1 开发工具1.1.2 技术栈 1.2 品优购项目搭建工作1.2.1 相关文件夹以及文件创建1.2.2 模块化开发1.2.3 网站favicon图标1.2.4 网站TDK三大标签SEO优化 二、品优购首页制作2.1 常用模块类名命名2.2 快捷导航shortcut制作2.…

传统的二次开发有哪些痛点问题?低代码平台帮你解决

一、什么是二次开发呢&#xff1f; 简单的来讲&#xff0c;二次开发就是在原有得软件中进行功能等方面得修改或者扩展&#xff0c;但是不改变原有系统的内核。 二、传统的二次开发有哪些痛点问题&#xff1f; 很多企业在业务发展的过程中会产生各种各样不同得需求&#xff0…

融云亮相「中国信息技术应用创新大会」,入选数字化转型优秀方案集

4 月 27 日&#xff0c;以“全栈创新 从可用到好用”为主题的“2023 第六届中国信息技术应用创新大会”在京顺利召开。移步【融云全球互联网通信云】回复“地图”限量免费领《社交泛娱乐出海作战地图》 大会以“论坛展示展览”的方式&#xff0c;全面、深入地反映信创产业的最新…

基于Android studio的机票管理app设计与开发案例

一 功能介绍 1. 用户模式功能&#xff1a; 用户注册登录功能&#xff08;账号、密码&#xff09;&#xff1b;航班信息&#xff08;航班号、起飞时间、登机时间、起点、终点、登机口&#xff09;&#xff1b;购买机票机票信息&#xff08;航班号、审核状态、乘客姓名、联系方…

Windows平台Qt超详细安装——5.9.6版本以及5.9都差不多,(仔细看,一定学会,学不会怪我)

目录 一、Qt 开发环境&#xff08;Windows&#xff09; 二、设置 QtCreator 编译路径 三、设置 Qt 源码路径 四、QtCreator 介绍 一、Qt 开发环境&#xff08;Windows&#xff09; ①官网下载地址&#xff1a;&#xff08;对应版本&#xff0c;可以在这个网址下面自己找&a…

字节给的比我想的还多?网友看完:打死也要去

曾经的互联网是PC的时代&#xff0c;随着智能手机的普及&#xff0c;移动互联网开始飞速崛起。而字节跳动抓住了这波机遇&#xff0c;2015年&#xff0c;字节跳动全面加码短视频&#xff0c;从那以后&#xff0c;抖音成为了字节跳动用户、收入和估值的最大增长引擎。 自从字节…

【2023考研】双非末流二本非科班一战上岸杭电经验帖

一、作者背景 我本科就读于黑龙江省某末流二本双非大学的物联网工程专业&#xff0c;专业排名一般就在20&#xff05;左右&#xff0c;在校期间无科班竞赛经验&#xff0c;只参加过大学生数学竞赛和杭电要求的PAT考核乙级&#xff0c;项目方面只参加过大创比赛以及专业的课程设…

短视频矩阵多账号系统应用技术开发.源码

抖音矩阵号管理系统是一款用于管理抖音矩阵号的软件&#xff0c;具有如下特点&#xff1a; 1. 用户管理&#xff1a;支持多用户管理&#xff0c;可以指定每个用户对应的抖音矩阵号。 2. 粉丝管理&#xff1a;支持实时查看粉丝数量、关注者数量、点赞数量等统计数据&#xff0c…

学系统集成项目管理工程师(中项)系列20_变更管理

1. 许多项目失败的原因就是由于对变更的处理不当 2. 变更管理是为了使项目实际执行情况和项目基准相一致而对项目变更进行管理&#xff0c;其可能的结果是拒绝变更或调整基准 3. 分类 3.1. 性质 3.1.1. 重大变更 3.1.2. 重要变更 3.1.3. 一般变更 3.1.4. 通过不同审批权…

【Linux】Linux权限,shell命令以及运行原理

之前我们一直敲得命令和口口声声说的shell到底是什么呢&#xff1f;命令行提示符和输入的指令并且可以执行都是通过命令行解释器来实现的&#xff0c;那么命令行解释器就是我们常说的shell&#xff0c;具体我们看下面&#xff01; 目录 一、shell命令以及运行原理 二、Linux权…

百亿量化私募高薪急招C++

百亿量化私募高薪急招C&#xff01; 秋招/校招/社招&#xff0c;21/22/23届可 base北上杭深 现招岗位:C量化系统开发工程师 年base40-80万bonus 通过这里找到我 slam_pan 工作职责 1. 参与交易平台的设计、开发与测试&#xff0c;实现交易策略、风控等需求&#xff1b; 2. 开发…

【DahO安装及使用】

1 安装 Step 1&#xff1a;官网注册帐号 注册地址在这里&#xff08;注册完毕默认登录&#xff09; Step 2&#xff1a;点击下载链接&#xff0c;下载你需要的版本 这里&#xff0c;我下载的是DashO的Windows版本。 下载完毕后官方会向您发送邮件&#xff0c;复制其中的&qu…

WMS和ERP的区别是什么

WMS和ERP是企业常用的两种管理软件&#xff0c;虽然它们都是管理企业资源的软件&#xff0c;但它们的功能和使用场景有所不同。 那么问题来了&#xff1a;很多工厂的管理者都知道自己已经购买或者计划购买的ERP中包含仓储管理模块&#xff0c;那么WMS和ERP系统中的仓储管理模…

node:常用的文件操作fs模块

文章目录 背景读写创建复制移动&#xff08;重命名&#xff09;是否存在删除示例1、文件内容替换2、文件夹内的所有文件内容替换 封装 背景 我们日常工作中&#xff0c;想要对前端做一些自动化操作的时候&#xff0c;免不了使用 node 的文件读写操作&#xff0c;今天来总结一下…

JVM 堆

堆的核心概述 一个 JVM 实例只存在一个堆内存&#xff0c;堆也是 Java 内存管理的核心区域Java 堆区在 JVM 启动的时候即被创建&#xff0c;其空间大小也就确定了。是 JVM 管理的最大一块内存空间堆可以处于物理上不连续的内存空间中&#xff0c;但是在逻辑上它应该被视为连续…

久戴不痛的蓝牙耳机有哪些?久戴不痛的蓝牙耳机推荐

现如今的都市青年离不开什么数码产品&#xff1f;抛开手机这一答案&#xff0c;耳机肯定是第一项&#xff0c;遇到嘈杂的车流声&#xff0c;轰鸣的地铁&#xff0c;安静的图书馆&#xff0c;蓝牙耳机可以可以让人更加沉浸在自己的世界里&#xff0c;很多烧友在选购时候除了对音…

MySQL基础(二十七)性能分析工具的使用

1. 数据库服务器的优化步骤 当我们遇到数据库调优问题的时候&#xff0c;该如何思考呢&#xff1f;这里把思考的流程整理成下面这张图。 整个流程划分成了观察&#xff08;Show status&#xff09;和行动&#xff08;Action&#xff09;两个部分。字母 S 的部分代表观察&…

全网最详细,性能测试场景模型分析,从0到1实施性能测试...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 性能测试&#xf…

资深测试总结,Python接口自动化测试-数据依赖解决(详全)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 Python自动化测试&…