汽车加油

心不动则不痛 提交于 2019-12-02 12:46:12

内容:

一辆汽车加满油后可行驶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;

}

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!