C语言程序问题——活动安排问题

C语言程序问题——活动安排问题,第1张

题目出得不严密,题目要求是“计算安排的活动最多时会场使用时间”,但当“安排的活动最多”有多种安排方式,题目中却没说输出这多种方式中的哪一种的会场使用时间。例如 :当有3项活动要安排,开始时间和结束时间分别是1 2、3 5、4 5,这时可以安排第一项和第二项活动,也可以安排第一项和第三项活动,前者的会场使用时间是5,后者是4,这时是输出4还是5,题目中没用指出。先假设测试数据不会出现上述情况,则利用贪心算法求解活动安排问题是一种最常用的方法:#include<stdioh>

#include<stdlibh>

struct activity

{

int start;

int end;

}act[8501];

int comp(const void p, const void q)

{

struct activity a=(struct activity )p;

struct activity b=(struct activity )q;

return a->end-b->end;

}

int main()

{

int i,k,res,e;

while(scanf("%d",&k)!=EOF)

{

for(i=0;i<k;i++) scanf("%d%d",&act[i]start,&act[i]end);

qsort(act,k,sizeof(act[0]),comp);

res=act[0]end-act[0]start+1;

e=act[0]end;

for(i=1;i<k;i++)

{

if(act[i]start>e)

{

res+=act[i]end-act[i]start+1;

e=act[i]end;

}

}

printf("%d\n",res);

}

return 0;

}

比如:

int a=3,b=4,c;

c=a+++b;

将被解释为

c=(a++)+b;

而不会被解释为

c=a+(++b);

贪心算法的主要意义是从左至右依次解释最多的符号!

以上就是关于C语言程序问题——活动安排问题全部的内容,包括:C语言程序问题——活动安排问题、求C语言或c++的贪心算法的例题、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9307135.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存