#include "iostream"
#include "fstream"
#include "queue"
using namespace std;
/*
最远加油站优先
*/
int s[50];
int greedy(int n, int k)
{
int i;
int sum = 0;
int count = 0;
for(i=0; i<=k; i++)
{
if(s[i] > n) //如果两个加油站之间的距离超过n
{
cout << "No Solution!" << endl;
return -1;
}
if(sum + s[i] > n) //如果加上距离下一个加油站的距离超过n
{
sum = 0; //在此处加油
count++;
}
sum += s[i];
}
return count;
}
int main()
{
ifstream fin("汽车加油.txt");
int n, k;
cout << "输入汽车加油后可行驶的距离:";
fin >> n; cout << n;
cout << "\n输入加油站个数:";
fin >> k; cout << k;
cout << "\n输入加油站之间距离:\n";
int i, j;
for(i=0; i<=k; i++)
{
fin >> s[i]; cout << s[i] << " ";
}
cout << "\n最少的加油次数为:" << greedy(n, k);
cout << endl;
fin.close();
return 0;
}
汽车加油问题
最新推荐文章于 2024-03-26 19:27:10 发布