您的位置:首页 > 其它

汽车加油问题

2015-11-23 12:33 239 查看
#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;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: