校oj-1019 第三届程序设计大赛 汽车加油

探讨了在第三届程序设计大赛中,如何设计最优算法,确定汽车在特定行程中的最少加油次数,以确保从起点到终点的有效行驶。输入包括汽车满油行驶距离及各加油站间距离,输出为最少加油次数或无法到达的提示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第三届程序设计大赛 汽车加油

Time Limit:1000MS  Memory Limit:65536K
Total Submit:1510 Accepted:540

Description

一辆汽车加满油后可行驶N公里。旅途中有若干个加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。

Input

第一行有2 个正整数N和K(1 <= N <= 100,1 <= K< = 100),表示汽车加满油后可行驶N公里,且旅途中有K个加油站。接下来的1 行中,有K+1 个整数,表示第K个加油站与第K-1 个加油站之间的距离。第0 个加油站表示出发地,汽车已加满油。第K+1 个整数表示第K个加油站与目的地的距离。

Output

将编程计算出的最少加油次数输出。如果无法到达目的地,则输出 
No Solution(注意:No和Solution之间有一个空格)

Sample Input

 

8 8
3 2 3 6 5 4 2 7 2

 

Sample Output

 

5

 

Source

 

#include <iostream>
#include <cstdio>
using namespace std;
int cnt;
int main()
{
	int N,K,flag =0;
	int a[100005];
	scanf("%d%d",&N,&K);
	for(int i=0;i<=K;i++)
	{
		scanf("%d",&a[i]);
		if(a[i]>N)
			flag = 1;
	}
	int p = N;
	cnt = 0;
	if(flag == 1)
	{
		printf("No Solution");
	}
	else
	{
	for(int i=0;i<=K;i++)
	{
		
		if(p>=a[i])
		{
			p-=a[i];
			if(p-a[i+1]<0)
			{
				cnt++;
				p = N;
			}
		}
		
	}
	printf("%d",cnt);
	}
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值