求一c++算法

yuanhuan799 2009-03-23 03:37:45
已知很多时间段的收费情况(按一天来计算)
如:1:00-2:00 收费 18元
2:00-3:10 收费 20元
18:01-19:00 收费 15元
其余时间 收费 12元
求:给一个任意时间段(如:1:00-18:30)的最大收费值是多少(不足一小时按一小时计算).
高手们给个算法或者想法??
...全文
142 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
tab0tab 2009-03-25
  • 打赏
  • 举报
回复
保存在数据库中,记录号用起始时间命名,查找时用条件筛选即可.
select sum(列名) from table where id > 起始时间 and id < 终止时间
fiveyes 2009-03-25
  • 打赏
  • 举报
回复
这问题本身好象不难吧,只要弄个合适的数据结构就OK了,算法应该比较简单。

1、可以弄一个数组,假设有12个时间段就s[12],每个元素里面存着该时间段的收费值。
2、可以再搞一个函数,先根据输入的起止时间,判断都包括了哪些时间段(因为不足1小时也按1小时,所以只要落在某时间段里面,就包括这个时间段)。比如说1:00-18:30,就是0-2时间段,最后把s[0]到s[2]的值全加起来就可以了。

大体上类似于这样:

int s[N]={18, 20, 15, 12};

int cal(float StartTime, float StopTime)
{
int Start, Stop, Sum=0;
if(StartTime>=1.0)Start=0;
else if(StartTime>=2.0) Start=1;
//...
//结束的时间段也这么弄
for(int i=Start;i<=Stop;i++)
Sum+=s[i];
return Sum;
}
XXGGYYXX 2009-03-25
  • 打赏
  • 举报
回复
时间段的结果应该是唯一
ysysbaobei 2009-03-25
  • 打赏
  • 举报
回复
yuanhuan799 2009-03-25
  • 打赏
  • 举报
回复
给定时间段的结果是唯一的,但是我就是要随便给一个时间段,就出结果
mandysss 2009-03-24
  • 打赏
  • 举报
回复
某个时间段的收费不是一个定值吗
Wolf0403 2009-03-24
  • 打赏
  • 举报
回复
这个。。给定时间段的结果应该是唯一的吧?
jn989 2009-03-23
  • 打赏
  • 举报
回复
lz可以看看0-1背包问题及其相关变形应该就有思路了

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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