本月内a,b,c,d四个同种类物品,A的使用时间为1-5号,B的使用时间为4-8号,C的使用时间是10-15号,D的使用时间是6-20号,E的使用时间是8-16,F的使用时间是2-7,G的使用时间是21-30,合理利用这四个物品,该如何最大化利用,优先使用一个物品?(四个不一定都要被分配,单个物品的使用时间无缝连接最好,剩余物品未被使用最好)
其中A-G为使用人!合理使用a,b,c,d四个物品
太难了,我居然没看懂。
问题修改后,勉强看懂了,关键是1-5号这个太那个,哥们你是福建还是广东的?
思路如下:
1、abcd放在一个Stack里面,先进后出。
2、A\B\C\D关注开始日期。
3、按照日期从1~31日向后计算,需要资源就从stack中pop一个出来。
4、继续下一个日期,有用户需求就POP资源出来,有到期用户就释放占用的资源,进行入栈push操作。
5、这样就可以保证单个物品的使用时间无缝连接最好以及剩余物品未被使用最好这两个要求。
日期循环可以优化只遍历使用者的开始日期,不需要1~31日逐个计算。
按照这种做法,如果有上万人使用上千个物品,日期在跨度很大,效率上是否快
@ahth: 我觉得还行,不知道你需要多快。
@爱编程的大叔: 假如现在已经排好了各个人的物品使用情况,(A使用1号-5号日期,C使用10号-15号日期都是用的a物品,现在又增加了两个(H的使用时间是6号-9号时间,I的使用时间是1号-20号),从合理利用上H应该是使用a物品,I可以另外单独另使用一个物品),能不能贴下算法代码?
@ahth: 我那思路基本就是伪代码了,你还想咋的。
按时间遍历,把物品划分出去
问题没描述清楚啊 4个物品,那EFG怎么来的?
题确实很难懂啊。应该是2楼的做法可以满足。
保证A-G人都可以工作,而且用料种类越少越好,而且满足同一种料越长时间长好。
是不是就是一个简易的排班表??
简单说就是雇佣最少的兼职,保证每天都不会空缺