题目描述
使用贪心算法求解最优装载问题。
输入
每组输入包括两部分,
第一行包括集装箱个数n,以及船的装载量C。
接下来n行每行则输入集装箱编号以及其重量。
第一行包括集装箱个数n,以及船的装载量C。
接下来n行每行则输入集装箱编号以及其重量。
输出
输出包括两行,第一行为最多可装载的集装箱数量 。
第二行则为最优装载方案对应的所有集装箱编号(按照装载次序输出,用空格隔开) 。
第二行则为最优装载方案对应的所有集装箱编号(按照装载次序输出,用空格隔开) 。
样例输入 Copy
样例输出 Copy
while True:
try:
n, c = list(map(int, input().split()))
a = []
for i in range(n):
d = list(map(int, input().split()))
a.append(d)
sorted_a = sorted(a, key=lambda x: x[1])
weight = 0
num = 0
s = []
for i in range(n):
if weight + sorted_a[i][1] <= c:
weight += sorted_a[i][1]
num += 1
s.append(i)
print(num)
s_2 = []
for index in s:
s_2.append(sorted_a[index][0])
print(*s_2)
except EOFError:
break
1.排序:按物体的轻重顺序,由轻到重排列
2.贪心选择 :只要满足weight + sorted_a[i][1] <= c,即装得下
3.拓展函数:sorted_a = sorted(a, key=lambda x: x[1])