Posted on 2008-05-13 23:48
山泉彎延 閱讀(612)
評(píng)論(1) 編輯 收藏 引用
/*
*有N個(gè)人排隊(duì)到R個(gè)水龍頭去打水,他們裝滿水桶的時(shí)間
*為T1,T2,…,Tn為整數(shù)且各不相等,應(yīng)如何安排他們
*的打水順序才能使他們花費(fèi)的時(shí)間最少?
*分析:由于排隊(duì)時(shí),越靠前面的計(jì)算的次數(shù)越多,顯然越小
*的排在越前面得出的結(jié)果越小(可以用數(shù)學(xué)方法簡(jiǎn)單證明,
*這里就不再贅述),所以這道題可以用貪心法解答
*/
/*------------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---------------*/