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

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

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;
}

 

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页