贪心算法之虚拟汽车加油问题

Posted 柳小茶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了贪心算法之虚拟汽车加油问题相关的知识,希望对你有一定的参考价值。

 题目描述

一辆虚拟汽车加满油后可以行驶n km。途中有若干个加油站。设计一个有效的算法,指出应在那个加油站停靠加油,使沿途加油次数最少。 

 测试数据

输入

7 7

1 2 3 4 5 1 6 6

 输出

4

#include<iostream>
#include<vector>
using namespace std;
//将n分解为若互不相同的自然数的和 使他们的乘积最大
#define Max 100005
int main(){
    int n;
    cin>>n;
    if(n<4)
    {
        cout<<4<<endl;
        return 0;
    }
    int arr[Max]={};
    int m=n;
  //  arr[0]=2;
    int c=2;
    int i;
   for( i=0;c<=m;i++){
       arr[i]=c;
        m-=c;
       c++;
   }
     int cou=i;//一共有几个数
   //如果优剩余的数 就从后往前平均分配到前的数字上
        while(m){
            arr[--i]++;
            m--;
        }
    
    int mul=1;
    for(int i=0;i<cou;i++){
        mul*=arr[i];
    }
    cout<<mul;
    
}

 

以上是关于贪心算法之虚拟汽车加油问题的主要内容,如果未能解决你的问题,请参考以下文章

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

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

贪心算法的汽车加油问题(使列表索引超出范围)

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

汽车加油问题(贪心算法),O(n) 复杂度的嵌套 while 循环

[贪心算法]加油站