汽车加油问题

问题描述:

  一辆汽车加满油后可行驶n公里。旅途中有若干个加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。对于给定的n(n <= 5000)和k(k <= 1000)个加油站位置,编程计算最少加油次数。并证明算法能产生一个最优解。

代码:

 1 #include <cstdio>
 2 #include <algorithm>
 3 #include <iostream>
 4 using namespace std;
 5 const int maxn=100;
 6 int   x[maxn];
 7 int main()
 8 {
 9     int n,k;
10     cin>>n>>k;
11     for(int i = 0;i <=k;i++){
12         cin>>x[i];
13         if(x[i]>n)
14         {
15             cout<<"No Solution!"<<endl;
16             return 0;
17         }
18     }
19     int sum=0,ans=0;
20     for(int i=0;i<=k;i++)
21     {
22         sum+=x[i];
23         if(sum>n)
24         {
25             ans++;
26             sum=x[i];
27         }
28     }
29     cout<<ans<<endl;
30     return 0;
31 }

输入示例:

7 7

1 2 3 4 5 1 6 6

输出示例:

4

猜你喜欢

转载自www.cnblogs.com/wangxuelin/p/9035214.html