小编use*_*358的帖子

查找具有最大乘积的一组整数的子集

设A是一组非空整数.编写一个函数find,输出具有最大乘积的A的非空子集.例如,find([ - 1,-2,-3,0,2])= 12 =( - 2)*( - 3)*2

这就是我的想法:将列表分成正整数列表和负整数列表:

  1. 如果我们有一个偶数个负整数,那么将两个列表中的所有内容相乘,我们就得到了答案.
  2. 如果我们有一个奇数个负整数,找到最大值并将其从列表中删除.然后将两个列表中的所有内容相乘.
  3. 如果列表只有一个元素,则返回此元素.

这是我在Python中的代码:

def find(xs):
    neg_int = []
    pos_int = []
    if len(xs) == 1:
        return str(xs[0])
    for i in xs:
        if i < 0:
            neg_int.append(i)
        elif i > 0:
            pos_int.append(i)
    if len(neg_int) == 1 and len(pos_int) == 0 and 0 in xs:
        return str(0)
    if len(neg_int) == len(pos_int) == 0:
        return str(0)
    max = 1
    if len(pos_int) > 0:
        for x in pos_int:
            max=x*max
    if …
Run Code Online (Sandbox Code Playgroud)

python algorithm

8
推荐指数
1
解决办法
1037
查看次数

标签 统计

algorithm ×1

python ×1