这道题...?

lqg5209 2007-05-14 01:46:52
要出租一个会议室,出租时间为8:00至18:30,每次出租费为1元(出租费与占用多少时间没有关系,只与出租个数有关),若有多个需求,并且每个需求的开始时间和使用时间固定不变,请问怎么求出出租会议室的最大次数。
例如,有6个需求,分别为
8:00 30
9:30 20
9:40 6
10:00 40
14:00 50
14:30 20
格式为开始时间 执行时间。
这是我自己写的一道算法,不知对不,请高人指点一下,谢谢!
#include <stdio.h>
typedef struct lendroom{
int begin;
int end;
}lend;/*设置一个结构体用于存储开始和结束时间*/
void main()
{int hour,min,time,i,j,num,N;
lend a[201];
scanf("%d",&num);
for(i=1;i<=num;i++)
{scanf("%d:%d %d",&hour,&min,&time);
a[i].begin=60*hour+min;
a[i].end=a[i].begin+time;
}/*存储每次出租会议室的开始时间和结束时间,并转换为数字以便比较其大小*/
for(i=2;i<=num;i++)
{j=i-1;
a[0]=a[i];
while(a[0].end<a[j].end)
{a[j+1]=a[j];
j--;
}
a[j+1]=a[0];
}/*用结束时间排序*/
N=1;j=1;
for(i=2;i<=num;i++)
if(a[j].end<=a[i].begin)
{N++;j=i;}/*通过比较产生可以出租的最大数(最早出租的不用比较)*/
printf("%d\n",N);
system("pause");
}
这里假设给出的时间都是正确的,只探讨算法。
...全文
162 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
fire_woods 2007-05-14
  • 打赏
  • 举报
回复
背包问题.

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧