编写程序,输入三个正数列表,从三个列表中各取一个值相乘,输出乘积最大的三个数及各序列中所取数的位置
时间: 2024-10-19 18:11:48 浏览: 42
编写这样的程序,首先需要接收用户输入的三个正数列表,然后计算每对对应元素的乘积,并找出其中乘积最大的三组。最后,返回这三组乘积、以及每组内元素在原列表中的位置。这里是一个Python示例代码:
```python
def find_max_products(lists):
# 检查列表长度是否相等
if len(set(len(lst) for lst in lists)) != 1:
raise ValueError("所有列表必须有相同的长度")
# 记录最大乘积及其位置
max_product = [0] * 3
max_positions = [[0, 0, 0] for _ in range(3)]
for i in range(len(lists[0])):
a = lists[0][i]
b = lists[1][i]
c = lists[2][i]
product = a * b * c
if product > max_product[0]:
max_product[0] = product
max_positions[0] = [i, i, i]
elif product == max_product[0]:
max_positions[0][max_positions[0].count(i)] = i
# 更新其他两个乘积的比较
temp_product = min(product, a * b, a * c, b * c)
if temp_product > max_product[1]:
max_product[1] = temp_product
max_positions[1] = [i] * 3 if temp_product == a * b else [a.index(b), i, None]
elif temp_product == max_product[1]:
max_positions[1][max_positions[1].count(i)] = i
temp_product = min(product, a * b, b * c, c * a)
if temp_product > max_product[2]:
max_product[2] = temp_product
max_positions[2] = [i] * 3 if temp_product == a * b else [b.index(a), i, None]
return max_product, max_positions
# 示例
lists = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
result = find_max_products(lists)
print(f"乘积最大的三个数是 {result[0]},它们分别来自索引:{result[1]}")
```
阅读全文