7-2 汽车加油问题 (20分) 一辆汽车加满油后可行驶 n公里。旅途中有若干个加油站。设计一个有效算法,指出应 在哪些加油站停靠加油,使沿途加油次数最少。

汽车加油问题 SDUT OJ 贪心算法 汽车加油问题 Description 一辆汽车加满油后可行驶n公里。旅途中有若干个加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。并证明算法能产生一个最优解。 对于给定的n和k个加油站位置,计算最少加油次数。 Input 输入数据的第一行有2 个正整数n和k(n≤5000,k≤1000),表示汽车加满油后可行驶n公里,且旅途中有k个加油站。接下来的1 行中,有k+1 个整数,表示第k个加油站与第k-1 个加油站之间的距离。第0 个加油站表示出发地,汽车已加满油。第k+1 个 阅读详情
AI摘要

本文介绍了一种算法,用于解决在给定汽车行驶里程和多个加油站的情况下,如何选择加油站以实现最少加油次数的问题。输入包括汽车的行驶里程和各加油站间的距离,输出是最少加油次数或无法到达目的地的提示。

一辆汽车加满油后可行驶 n公里。旅途中有若干个加油站。设计一个有效算法,指出应 在哪些加油站停靠加油,使沿途加油次数最少。

输入格式:

第一行有 2 个正整数n和 k(k<=1000 ),表示汽车加满油后可行驶n公里,且旅途中有 k个加油站。 第二行有 k+1 个整数,表示第 k 个加油站与第k-1 个加油站之间的距离。 第 0 个加油站表示出发地,汽车已加满油。 第 k+1 个加油站表示目的地。

输出格式:

输出最少加油次数。如果无法到达目的地,则输出“No Solution!”。

输入样例:

7 7
1 2 3 4 5 1 6 6 

输出样例:

4

代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int m,n;
    scanf("%d%d",&m,&n);
    int i,j;
    int a[n+1];
    for(i=0;i<=n;i++)
    {
        scanf("%d",&a[i]);
    }
    int sum=a[0];//从第一站记起
    int count=0;
    for(i=0;i<=n;i++)
    {
        if((sum+a[i])<=m)
        {
            sum+=a[i];
        }
        else if(a[i]>m)
        {
            printf("No Solution!");
            return 0;
        }
        else
        {
            count++;
            sum=a[i];//更新距离
        }
    }
    printf("%d\n",count);
    return 0;
}

 

汽车加油问题【贪心算法】 阅读详情

相关推荐

算法设计与分析[贪心]-汽车加油问题

Description 一辆汽车加满油后可行驶n公里。旅途中有若干个加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。 Input 第一行有2个正整数n和k,表示汽车加满油后可行驶n公里,且旅途中有k个加油站。接下来的1 行中,有k+1个整数,表示第k个加油站与第k-1个加油站之间的距离。第0个加油站表示出发地,汽车已加满油。第k+1个加油站表示目的地

qiu__hui的博客 8921

加油站(贪心算法)

一辆汽车加满油后可行驶n公里。旅途中有若干个加油站。设计一个有效算法,指出应 在哪些加油站停靠加油,使沿途加油次数最少。对于给定的n(n 要求: 输入:第一行有2个正整数n和k,表示汽车加满油后可行驶n公里,且旅途中有k个加油站。接下来的1 行中,有k+1 个整数,表示第k个加油站与第k-1 个加油站之间的距离。第0 个加油站表示出发地,汽车已加满油。第k+1 个加油站表示目的地。 输出

oliver233的博客 6495

汽车加油问题(贪心--算法第四章)

汽车加油问题 一辆汽车加满油后可行驶n公里。旅途中有若干个加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。对于给定的n(n <= 5000)和k(k <= 1000)个加油站位置,计算输出最少加油次数与加油站编号。如果无法到达目的地,则输出”NoSolution”。 输入:第一行有2个正整数n和k,表示汽车加满油后可行驶n公里,且旅途中有k个加油站。接下来的1 行中,有k+1个整数,表示第k个加油站与第k-1个加油站之间的距离。第0个加油站表示出发地,汽车已加满油。第k

weixin_44104924的博客 1375

汽车加油问题(贪心算法)

1.问题描述:一辆汽车加满油后可行驶nkm。旅途中有若干加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。 算法设计:对于给定的n和k个加油站位置,计算最少加油次数。 数据输入:n:表示汽车加满油后可行驶nkm k:旅途中有k个加油站 k+1个整数:表示第k个加油站与第k-1个加油站之间的距离。第0个加油站表示出发地,汽车已加满油。第k+1个加油站表示目的地。 数据输出:最少加油次数和具体在哪几个加油站加油。 例如:n=7 ...

每日提升一点点 1494

7-7 汽车加油问题 (20 分)

7-7 汽车加油问题 (20 分) 题目来源:王晓东《算法设计与分析》 一辆汽车加满油后可行驶 n公里。旅途中有若干个加油站。设计一个有效算法,指出应 在哪些加油站停靠加油,使沿途加油次数最少。 输入格式: 第一行有 2 个正整数n和 k(k&lt;=1000 ),表示汽车加满油后可行驶n公里,且旅途中有 k个加油站。 第二行有 k+1 个整数,表示第 k 个加油站与第k-1 个加油站之间...

qq_41700374的博客 1471

算法设计与分析贪心算法之汽车加油问题

汽车加油问题 问题描述 一辆汽车加满油后可行驶n公里。旅途中有若干个加油站。设计一个有效算法,指出应哪些加油站停靠加油,使沿途加油次数最少。对于给定的n(n <= 5000)和k(k <= 1000)个加油站位置,编程计算最少加油次数。要求: 输入:第一行有2个正整数n和k,表示汽车加满油后可行驶n公里,且旅途中有k个加油站。接下来的1行中,有k+1个整数,表示第k个加油站与第k-1个...

Air_Penguin5291的博客 880

虚拟汽车加油问题(贪心算法求解与C++实现)

问题描述:一辆汽车加满油后可行驶 n km。旅途中有若干加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。 算法设计:对于给定的n和k个加油站位置,计算最少加油次数。 数据输入:n:表示汽车加满油后可行驶 n km k:旅途中有k个加油站 k+1个整数:表示第k个加油站与第k-1个加油站之间的距离。第0个加油站表示出发地,汽车已加满油。第k+1个加油站表示目的地。 数据输出:最少加油次数和具体在哪几个加油站加油,如果无法到达目的地,...

Changqing9的博客 2480

XYNUOJ 1254 汽车加油问题—贪心算法

欢迎访问XYNUOJ 1254: 汽车加油问题 时间限制: 1 Sec  内存限制: 128 MB 提交: 8  解决: 7 [提交][状态][讨论版][Edit] [TestData] 题目描述 一辆汽车加满油后可行驶n公里。旅途中有若干个加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。 【设计任务】 对于给定的n和k个加油站位置

69小石头的博客 2041

虚拟汽车加油问题 —— 【算法设计】贪心法

一辆汽车加满油后可行驶nkm。旅途中有若干加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。

Ve99tr’s Blog 3049

汽车加油问题 动态规划

给定一个N*N 的方形网格,设其左上角为起点◎,坐标为(1,1),X 轴向右为正,Y轴向下为正,每个方格边长为1,如图所示。一辆汽车从起点◎出发驶向右下角终点▲,其坐标为(N,N)。在若干个网格交叉点处,设置了油库,可供汽车在行驶途中加油。汽车在行驶过程中应遵守如下规则:    (1)汽车只能沿网格边行驶,装满油后能行驶K 条网格边。出发时汽车已装满油,在起点与终点处不设油库。    (2)汽车经过一条网格边时,若其X 坐标或Y 坐标减小,则应付费用B,否则免付费用。    (3)汽车在行驶过程中遇油库则应加满油并付加油费用A。    (4)在需要时可在网格点处增设油库,并付增设油库费用C(不含加油费用A)。    (5)(1)~(4)中的各数N、K、A、B、C均为正整数,且满足约束:2 ≤ N ≤100,2 ≤ K ≤10。设计一个算法,求出汽车从起点出发到达终点的一条所付费用最少的行驶路线。

汽车加油问题 对于给定的n和k个加油站位置,编程计算最少加油次数。

Description 一辆汽车加满油后可行驶n公里。旅途中有若干个加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。并证明算法能产生一个最优解。 编程任务: 对于给定的n和k个加油站位置,编程计算最少加油次数。 Input 输入由多组测试数据组成。 每组测试数据输入的第一行有2 个正整数n和k,表示汽车加满油后可行驶n公里,且旅途中有k个加油站。接下来的1 行中,有k+1 个整数,表示第k个加油站与第k-1 个加油站之间的距离。第0 个加油站表示出发地,汽车已加满油。第k+1 个加油站表示目的地。 Output 对应每组输入,输出的每行是计算出的最少加油次数。如果无法到达目的地,则输出”No Solution”。 Sample Input 7 7 1 2 3 4 5 1 6 6 Sample Output 4

贪心算法解决汽车加油问题

问题描述:一辆汽车加满油后可行驶n公里。旅途中有若干个加油站。设计一个有效算法,指出应 在哪些加油站停靠加油,使沿途加油次数最少。对于给定的n(n 在哪些加油站停靠加油,使沿途加油次数最少。对于给定的n(n 要求: 输入:第一行有2个正整数n和k,表示汽车加满油后可行驶n公里,且旅途中有k个加油站。接下来的1 行中,有k+1 个整数,表示第k个加油站与第k-1 个加油站之间的距

sinat_40570932的博客 1万+

汽车加油问题(贪心算法)c++

问题描述 一辆汽车加满油后可以行驶nkm。旅途中有若干加油站。设计一个有效算法指出应在哪些加油站停靠加油,使沿途加油次数最少。

贪心算法——汽车加油问题

一辆汽车加满油后可行驶n公里。旅途中有若干个加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。 输入:第1行两个正整数n和k,表示汽车加满油后可行驶n 公里,且旅途中有k个加油站。 第2行有k+1个整数,表示第k个加油站与第k-1个加油站之间的距离。第0个加油站表示出发地,汽车已加满油,第k+1个加油站表示目的地。 输出:最少加油次数。如果无法到达目的地,则输出“No Solution”。 代码: #include<stdio.h> #...

i道i的博客 4402

算法分析汽车加油问题

Description 一辆汽车加满油后可行驶n公里。旅途中有若干个加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。 对于给定的n和k(k <= 1000)个加油站位置,编程计算最少加油次数。 Input 有多个测试用例。每个测试用例输入数据的第一行有2 个正整数n和k,表示汽车加满油后可行驶n公里,且旅途中有k个加油站。接下来的1 行中,有k+1 个整数,表示第k个加油站与第k-1 个加油站之间的距离。第0 个加油站表示出发地,汽车已加满油。第k+1 个加油站表示目的地。当输入n,k都是0的时候表示测试结束。 Output 将编程计算出的最少加油次数输出,每个测试用例输出一行。如果无法到达目的地,则输出"No Solution"。 Sample Input 7 7 1 2 3 4 5 1 6 6 5 1 50 5 0 0 Sample Output 4 No Solution

汽车加油问题+算法设计

问题描述:一辆汽车加满油后可行驶 n 公里, 旅途中有若干个加油站。 请指出应在哪些加油站停靠加油使得沿途加油次数最少。本题对于给定的正整数 n 和 k 个加油站位置, 请计算最少加油次数。

虚拟汽车加油问题——算法设计

一辆汽车加满油后可行驶n公里。旅途中有若干个加油站。设计一个有效算法,指出应 在哪些加油站停靠加油,使沿途加油次数最少。对于给定的n(n <= 5000)和k(k <= 1000)个加油站位置,编程计算最少加油次数。并证明算法能产生一个最优解。 要求: 输入:第一行有2个正整数n和k,表示汽车加满油后可行驶n公里,且旅途中有k个加油站。接下来的1 行中,有k+1 个整数,表示第k个加油...

tingzizhilian的博客 1824

王珊数据库系统概论第5版视频教材

目录 隐藏 说明:本课程共包括1种电子书、84个高清视频(共68课时)、1种纸质书(赠品)。 网授课程 王珊《数据库系统概论》(第5版)网授精讲班【共68课时】 序号 名称 课时 1 第1章 绪 论(1) 00:32:25 2 第1章 绪 论(2) 00:17:03 3 第1章 绪 论(3) 00:50:19 4 第1章 绪 论(4) 00:20:37 5 第1章 绪 论(5) 00:24:47 6 第2章 关系数据库(1) 00:47:23 7 第2章 关系数据库(2) 00:14:48 8 第2章 关系

mrtaoy96的博客 1147
上一篇: 7-1 装箱问题 (20分) 假设有N项物品,大小分别为s ​1 ​​ 、s ​2 ​​ 、…、s ​i ​​ 、…、s ​N ​​ ,其中s ​i ​​ 为满足1≤s ​i ​​ ≤100的整数。
下一篇: 选择列表中的列 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
半零落
博客等级 码龄8年 170粉丝 98原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值