#include
#include
//#include
using namespace std;
struct Node
{
int begin_time;
int end_time;
Node * next;
};
void InitNode(Node *node)
{
node=NULL;
}
void Create(Node *&node,int n)
{
//InitNode(node);
cout>node->begin_time>>node->end_time;
node->next=NULL;
Node *p;
for(int i=0;i>p->begin_time>>p->end_time;
p->next=NULL;
node->next=p;
node=p;
}
node=head; //重新指向表头
}
void Sort(Node *node)
{
//对活动按开始时间排序
if(node==NULL)
{
exit(1);
}
Node *p=node;
Node *ap=NULL;
Node *q=node->next;
Node *aq=node;
Node *t=NULL;
while(q!=NULL)
{
while(p!=q)
{
if(q->begin_time>p->begin_time)
{
ap=p;
p=p->next;
}
else
{
t=q->next;
aq->next=q->next;
q->next=p;
if(ap!=NULL)
ap->next=p;
else
node=p;
break;
}
}
aq=q;
q=t;
p=node;
ap=NULL;
}
}
int MinRoom(Node *node)
{
int room=1;
Sort(node);
//Node *head=node;
Node *p=node;
Node *q=p->next;
int tag=0; //标记是否需要分配教室
while(q!=NULL)
{
tag=0;
while(p!=q)
{
if(q->begin_time>=p->end_time)
{
p->end_time=q->end_time;
tag=1;
break;
}
else
p=p->next;
}
if(tag==0)
room ;
q=q->next;
p=node;
}
return room;
}
int main()
{
Node *node;
int n;
cout>n;
Create(node,n);
int minRoom=0;
minRoom=MinRoom(node);
cout
return 0;
}。
全部