汽车加油问题(贪心)

题目:

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

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

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

          k:旅途中有k个加油站

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

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

例如: n=7  k=7

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

最优值:4


代码:

#include <iostream>

using namespace std;
const int MAXN=100;
int main()
{
    int n,k,a[MAXN],t[MAXN];
    while(cin>>n>>k)
    {
        for(int i=0;i<=k;i++)cin>>a[i];
        int sum=0,ans=0,cnt=0;
        for(int i=0;i<=k;i++)
        {
            sum+=a[i];
            if(sum>n)
            {
                sum=a[i];
                t[cnt++]=i-1;
            }
        }
        for(int i=0;i<cnt;i++)cout<<t[i]+1<<" ";
        cout<<endl;
        cout<<cnt<<endl;
    }
    return 0;
}


猜你喜欢

转载自blog.csdn.net/addkai/article/details/78297099