资源简介

假设要在足够多的会场里安排一批活动,并希望使用尽可能少的会场。设计一个有效的贪心算法进行安排。 用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

评论

共有 条评论