第三届程序设计大赛 汽车加油
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;
}
来源:CSDN
作者:Smile_Joe
链接:https://blog.csdn.net/Smile_Joe/article/details/103645945