汽车加油.cpp

来自「汽车加油问题的算法」· C++ 代码 · 共 64 行

CPP
64
字号
// 汽车加油.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

int main(int argc, char* argv[])
{
	int OilStationNum;//加油站的数目
	int MaxDist;      //汽车加满油以后行驶的最大距离
	int DiscOfCar;    //汽车一次加油后已经行驶的距离
	int Count;
	int * OilStationDist;
	printf("请输入加油站的段数(用整数表示):");
	scanf("%d",&OilStationNum);
	printf("------------------------------\n");
	printf("汽车加满油以后行驶的最大距离(用整数表示):");
	scanf("%d",&MaxDist);
	printf("---------------------------------------\n");
	OilStationDist=new int [OilStationNum-1];
	printf("请输入各各加油站之间的距离(假设不能有环路):\n");
	for (Count=0;Count<=OilStationNum-1;)
	{
		//
		scanf("%d",&OilStationDist[Count]);
		if (OilStationDist[Count]<=MaxDist)  
			Count++;
		else
			printf("你输入的加油站之间的距离大于汽车加满油以后行驶的最大距离,请重新输入当前距离!\n");
	}
	printf("-----------------------------------------\n");
	printf("下面是你输入的加油站之间的顺序间隔:\n");
	for (Count=0;Count<=OilStationNum-2;Count++)
	{
		//
		printf("加油站编号:%d,到下一站距离:%d\n",Count,OilStationDist[Count]);
	}
	printf("加油站编号:%d,到终点站距离:%d\n",OilStationNum-1,OilStationDist[OilStationNum-1]);
	DiscOfCar=0;
	Count=0;
	while (1)
	{
		if (DiscOfCar<=MaxDist)
		{
			//
			DiscOfCar+=OilStationDist[Count];
			Count+=1;
		}
		else
		{
			//
			Count-=1;
			printf("当前汽车需要在%d号加油站处加油,此时汽车行驶了%d公里\n",Count,DiscOfCar-OilStationDist[Count]);
			DiscOfCar=0;
		}
		if (Count>OilStationNum) 
		{
			printf("当前汽车到达终点,此时汽车距上一次加油行驶了%d公里\n",DiscOfCar-OilStationDist[Count]);
		}
		if (Count>OilStationNum)  break;
	}
	return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?