【问题标题】:Implementing a recursive subset sum function in python [duplicate]在python中实现递归子集和函数[重复]
【发布时间】:2022-01-16 13:23:36
【问题描述】:

如何编写以下伪代码以便它在 python 中工作,如果可能的话是递归的? 这是处理子集和问题,因此如果无法使用设置值获得整数 X,则将找到最接近的值。

function closest_sum(A, X):
    closest = {};
    closest_distance = infinity;
    for every subset S of A:
        sum = sum of elements in S;
        if abs(sum - x) < closest_distance:
            closest = S;
            closest_distance = abs(sum - x);
    return closest

【问题讨论】:

    标签: python recursion subset subset-sum


    【解决方案1】:

    从伪代码到 Python 的飞跃并不是很大;大多数情况下你只需要去掉分号:

    >>> def closest_sum(A, X):
    ...     closest = {}
    ...     closest_distance = None
    ...     for S in A:
    ...         if closest_distance is None or abs(sum(S) - X) < closest_distance:
    ...             closest = sum(S)
    ...             closest_distance = abs(sum(S) - X)
    ...     return closest
    ...
    >>> closest_sum([{1, 3}, {4, 5, 6}], 5)
    4
    

    请注意,您的伪代码不是递归表示的,因此它不会转换为递归函数。

    【讨论】:

    • 您将如何实现以便能够返回获得最终结果所需的值(最有可能作为列表)(在本例中为 4)? A 我的意思是数组/列表
    • 跟踪 S 而不是 closest 并返回。
    • 看到这个问题,这是我的问题:stackoverflow.com/questions/70324986/…
    猜你喜欢
    • 2020-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-13
    • 2017-05-07
    • 2016-05-06
    • 1970-01-01
    相关资源
    最近更新 更多