作业帮 > 数学 > 作业

算法命题:上下班有4个点,分别是9点、12点、13点、18点.随机给出两个点开始点和结束点,例如10点来公司,14点离开

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:数学作业 时间:2024/08/05 14:14:03
算法
命题:上下班有4个点,分别是9点、12点、13点、18点.随机给出两个点开始点和结束点,例如10点来公司,14点离开公司,建立数学模型得出在公司上班几个小时,上例是3个小时.
我的设想是10点和14点分别和4个点做差得到8个数,将这8个数通过建立算法得到是3个小时,感激涕零.
非常感谢以上两位建议,但还是有实现不了的情况,有可能两个时间都在上午,或都在下午。
我是想能不能分别做差,得到一堆数据后,再建模算出结果。
算法命题:上下班有4个点,分别是9点、12点、13点、18点.随机给出两个点开始点和结束点,例如10点来公司,14点离开
设A点上班,B点下班
楼主说的有道理,考虑到A和B都在上午或下午的情况,需要修改一下公式:
总上班时间为:
max(0,(min(B,12)-max(A,9))) + max(0,(min(B,18)-max(A,13)))
其中 min/max 函数表示两变量之间取较小/大值
你可以代入公式验算一下.
基本思路是分别计算上午和下午各上了几小时班,然后相加.
关于楼主说的算出几个差值,然后“建模”的想法,
因为这个函数是不连续的,必须要加入判断处理,在C语言中是IF语句,
用公式表达就是这里的 MIN 和 MAX
靠加减乘除做表达式,好像做不出不连续函数.