内容:
一辆汽车加满油后可行驶n公里。旅途中有若干个加油站。设计一个有效算法,指出应哪些加油站停靠加油,使沿途加油次数最少。对于给定的n(n <= 5000)和k(k <= 1000)个加油站位置,编程计算最少加油次数。
分析:
第一行有2个正整数n和k,表示汽车加满油后可行驶n公里,且旅途中有k个加油站。接下来的1行中,有k+1个整数,表示第k个加油站与第k-1个加油站之间的距离。第0个加油站表示出发地,汽车已加满油。第k+1个加油站表示目的地。输出编程计算出的最少加油次数。如果无法到达目的地,则输出”No Solution”。
代码:
//汽车加油
#include
using namespace std;
int main()
{
int n, k;
int* station;
cout << “请输入加满油后汽车的最大行驶距离以及加油站的个数:” <<endl ;
cin >> n >> k;
station = new int[k + 1];
cout << “请依次输入各相邻加油站之间的距离:” << endl;
for (int i = 0; i <= k; i++)
cin >> station[i];
int s = 0;
int number = 0; //number加油的次数
s = station[0]; //加满油后希望行驶的距离
for (int i = 1; i <= k; i++)
{
if (s > n) //判断能否到达加油站i
{
cout << "No solution!";
break;
}
else {
s = s + station[i]; //到达下一站i+1站希望的行驶距离
if (s > n)
{
number++;
s = station[i];
cout << "在第" << i << "个加油站加油" << endl;
}
}
}
cout << number << endl;
return 0;
}
来源:https://blog.csdn.net/jingyu_Alice/article/details/102761430