问题描述:
一辆汽车加满油后可行驶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