资源简介
假设要在足够多的会场里安排一批活动,并希望使用尽可能少的会场。设计一个有效的贪心算法进行安排。
用C++语言实现
代码片段和文件信息
#include
#include
#include
using namespace std;
struct Action{//定义活动
int start;
int end;
}*action;
int numcount*flag;//num用来记录活动的个数,count用来存储已安排活动的个数flag[i]用来标识第i个活动是否已安排
int nfirstcur;//n用来记录当前安排的会场编号,first用来记录安排下一个会场时起始活动的序号,cur记录当前活动的序号
void QuickSort( struct Action *aint pint r);
int Partition( struct Action *a int pint r);
void ArrangeOfRoom();
void Initialize();
void ReadCommand(char &cmd);
void Interpret(char &cmd);
void Release();
void Display();
int main(){
char cmd;
do
{
ReadCommand(cmd);
Interpret(cmd);
}while(cmd!=‘q‘&&cmd!=‘Q‘);
return 0;
}
void ReadCommand(char &cmd)
{
system(“cls“); //清屏
cout<<“\n--------------------------------------------------------------------------\n“;
cout<<“\t\t\t\t操 作 提 示“;
cout<<“\n--------------------------------------------------------------------------\n“;
cout<<“\tquit--q/Q \t\t continue---c/C\n“;
do{
cout<<“\n\t请选择操作:“;
cin>>cmd;
cout<<“\n--------------------------------------------------------------------------\n“;
}while(cmd!=‘c‘&&cmd!=‘C‘&&cmd!=‘q‘&&cmd!=‘Q‘);
}
void Initialize()
{
while(1)
{
fstream fin;
char filename[25];
cout<<“\n请输入文件名(长度在0~25之间)!\n“;
cin>>filename;
fin.open(filename);
if(fin.fail())
{
cout<<“\n打开文件失败!请确认文件名是否正确.\n“;
continue;
}
else
{
fin>>num;
action=new struct Action[num+1];
flag=new int[num+1];
flag[0]=0;
for(int i=1;i<=num;i++)
{
flag[i]=0;
fin>>action[i].start>>action[i].end ;
}
fin.close();
break;
}
}
}
void Interpret(char &cmd)
{
swi
评论
共有 条评论