Posted on 2008-05-13 23:48
山泉弯延 阅读(594)
评论(1) 编辑 收藏 引用
/*
*有N个人排队到R个水龙头去打水,他们装满水桶的时间
*为T1,T2,…,Tn为整数且各不相等,应如何安排他们
*的打水顺序才能使他们花费的时间最少?
*分析:由于排队时,越靠前面的计算的次数越多,显然越小
*的排在越前面得出的结果越小(可以用数学方法简单证明,
*这里就不再赘述),所以这道题可以用贪心法解答
*/
/*------------INCLUDES---------------*/
#include <cstdlib>
#include <iostream>
#include <queue>
#include <fstream>
/*------------INCLUDES---------------*/
/*---------------STD-----------------*/
using std::ifstream;
using std::queue;
using std::vector;
using std::greater;
using std::priority_queue;
/*---------------STD----------------*/
/*------------GLOBAL VAL------------*/
int M[5];
/*------------GLOBAL VAL------------*/
/*---------------MAIN---------------*/
int main(int argc, char *argv[])
{ ifstream Fin;
Fin.open("queue.txt");
priority_queue<int,vector<int>,greater<vector<int>::value_type> > iqueue;
int a;
while(Fin>>a)
{
iqueue.push(a);
}
int flag=0;
int i=0;
while(!iqueue.empty())
{
if(flag==0)
{M[i]=iqueue.top();
iqueue.pop();
i++;
if(i==5)
flag=1;
}
else if(flag==1)
{
M[i]=iqueue.top();
iqueue.pop();
i--;
if(i==0)
flag=0;
}
}
system("PAUSE");
return EXIT_SUCCESS;
}
/*---------------MAIN---------------*/