# 装载问题(贪心算法)
# 要求装载货物数量最多
# 快排
def partition(li, left, right):
# 取第一个元素
temp = li[left]
while left < right:
while li[right] >= temp and left < right:
right -= 1
li[left] = li[right]
while li[left] <= temp and left < right:
left += 1
li[right] = li[left]
li[left] = temp
return left
def quick_sort(li, left, right):
if left < right:
mid = partition(li, left, right)
# 排好左边
quick_sort(li, left, mid)
# 排好右边
quick_sort(li, mid+1, right)
# W为最大装载量
# li为各个货物重量
def load(W, li):
# 先从小到大排序
# 再从小到大装载,直至超出
quick_sort(li, 0, len(li)-1)
temp = 0
j = -1
for i in li:
j += 1
temp += i
if temp > W:
temp -= i
return temp, j
W = 100
li = [95, 5, 4, 65, 3, 42, 1]
max, n = load(W, li)
print("实际装载重量为:", max)
print("实际装载货物数量为:", n)
货物装载问题(Python贪心算法)
于 2024-02-28 19:00:49 首次发布