问题描述:一辆汽车加满油后可行驶nkm,旅途中有若干加油站,设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少
数据输入:n:表示汽车加满油后可行驶nkm
k:旅途中有k个加油站
k+1个整数:表示第k个加油站与第k-1个加油站之间的距离,第0个加油站表示出发地,汽车已加满油。第k+1个加油站表示目的地
数据输出:最少加油次数和具体在那几个地方加油
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,k;
int a[1005];
while(cin>>n>>k)
{
memset(a,0,sizeof(a));
for(int i=0;i<=k;i++)
cin>>a[i];
int ans=0;
int tmp=n;
for(int i=1;i<=k;i++)
{
tmp-=a[i];
if(tmp<=a[i+1])
{ans++;tmp=n;cout<<i<<" ";}
}
cout<<endl;
cout<<ans<<endl;
}
return 0;
}
/*
input
7 7
1 2 3 4 5 1 6 6
output
2 3 5 6
4
*/