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

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

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

数据输入:n:表示汽车加满油后可行驶nkm

          k:旅途中有k个加油站

         k+1个整数:表示第k个加油站与第k-1个加油站之间的距离。第0个加油站表示出发地,汽车已加满油。第k+1个加油站表示目的地。

数据输出:最少加油次数和具体在哪几个加油站加油。

 

例如: n=7  k=7

  K+1个整数:1 2 3 4 5 1 6 6

最优值:4

问题分析:把距离相加,判断是否大于n,如果大于n,计数一次

复制代码
#include <iostream>

using namespace std;

int main()
{   int n,k;
    cout<<"输入n,k"<<endl;
    cin>>n>>k;
    int a[100];
    cout<<"输入距离"<<endl;
    for(int i=1;i<=k+1;i++)
    {
        cin>>a[i];
    }
    int count=0;
    int sum=0;
    for(int i=1;i<=k+1;i++)
    {
        sum+=a[i];
        if(sum>=n)
        {
            sum=a[i];
            count++;
            cout<<"======="<<endl;
            cout<<""<<count <<"次加油的位置:"<<a[i-1]<<endl;
        }
    }

    cout << "总共加油:"<<count<<""<< endl;
    return 0;
}
复制代码

 

posted @   小橘子不小  阅读(9615)  评论(0)    收藏  举报
(评论功能已被禁用)
编辑推荐:
· 记录一次线上问题排查:JDK序列化问题
· 微服务之间有哪些调用方式?
· 记一次SQL隐式转换导致精度丢失问题的排查
· dotnet 9 通过 AppHostRelativeDotNet 指定自定义的运行时路径
· 如何统计不同电话号码的个数?—位图法
阅读排行:
· EF Core 10 现已支持 LeftJoin 和 RightJoin 运算符查询了!
· 一个基于 C# Unity 开发的金庸群侠传 3D 版,直呼牛逼!
· 记录一次线上问题排查:JDK序列化问题
· SQL Server 2025 中的改进
· 国内首个「混合推理模型」Qwen3深夜开源,盘点它的N种对接方式!
点击右上角即可分享
微信分享提示