送外卖问题

阅读: 评论:0

送外卖问题

送外卖问题

有n个小区需要外卖配送,分别有mi(i&#-1)个住户需要配送外卖,每户的配送时间均为1小时,现在有w个外卖员,每个外卖员只能送相邻小区,最后配送时间等于配送时间最长的外卖员的配送时间,求最短的配送时间;

最小—最大问题,动态规划

有4个小区,每个小区需要配送的住户数:[5,4,5,3]
有2个外卖配送员
最短配送时间【5,4】,【5,3】9

 递归地定义最优解

f(k,n):表示k个外卖员,送完n个小区的最短时间,默认参与的外卖员越多,时间越短

最优解为:第k个外卖员送最后{i.....n} n-i个小区的外卖,其他k-1个外卖员送{0....i} i个小区的外卖,能取到的最优解

代码
 

import math
def fun(num,data):n=len(data)sum_data=[sum(data[:i+1]) for i in range(n)]# print(sum_data)if n<=num:return max(data)else:arr=[[0]*n for _ in range(num)]print(arr)for j in range(num):for i in range(j,n):if j==0:arr[j][i]=sum_data[i]else:arr[j][i] =min([max(arr[j-1][k],sum_data[i]-sum_data[k]) for k in range(j-1,i)])print(arr)return arr[-1][-1]
arr=fun(4,[5,4,5,4,6])
print(arr)

 

 

本文发布于:2024-02-02 16:29:25,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170686256645017.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

下一篇:送外卖
标签:外卖
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23