c语言教室调度问题,求解编程题活动调度问题成绩:10/折扣:0.8假设要用很? 爱问知识人...

该博客主要讨论了一个关于活动排序的问题,通过创建一个结构体`Node`来表示活动,并实现了一个`Create`函数用于输入和初始化活动节点。然后,`Sort`函数对活动进行排序,确保按开始时间升序排列。最后,`MinRoom`函数计算了在不冲突的情况下,最少需要多少间教室来安排所有活动。这个算法对于资源分配和调度问题有一定的参考价值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#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;

}。

全部

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值