gpt4 book ai didi

list - 使用每组的一个数字查找多组中的数字总和

转载 作者:行者123 更新时间:2023-12-03 17:09:12 25 4
gpt4 key购买 nike

背景
嗨,我正在尝试解决编程问题,但遇到以下问题:
假设您有多个数字列表。全部按降序排列。
您现在必须从每个列表中取一个数字来获得最大可能的总和。
到目前为止很容易,要解决这个问题,您只需取每个列表的第一个数字即可。
但是现在,我需要第二大和,同时仍然使用每个列表中的一个数字。
为了实现这一点,我将采用每个列表中的第一个元素,但对于第一个和第二个数字之间差异最小的列表,将使用第二个数字。
这还是很可行的。
问题
但是我需要一个 Iterator 对每个可能的总和使用按降序排序的每个列表的一个数字。
出于性能原因,不可能只计算每个总和然后对其进行排序。该算法必须已经按降序提供总和。如果总和有多种组合,则必须多次返回总和。
其他要求
Iterator 应该是惰性的(仅在需要时计算下一个总和)。
列表已经是惰性的,这意味着您应该需要尽可能少的值来计算拟合总和。
例子
对于列表:

List 1: [5, 2, 1]
List 2: [10, 2]
List 3: [6, 1]
然后迭代器应该返回:
[5, 10, 6] = 21
[2, 10, 6] = 18
[1, 10, 6] = 17
[5, 10, 1] = 16
[5, 2, 6] = 13
[2, 10, 1] = 13
[1, 10, 1] = 12
[2, 2, 6] = 10
[1, 2, 6] = 9
[5, 2, 1] = 8
[2, 2, 1] = 5
[1, 2, 1] = 4
评论
我不需要代码来回答我的问题(如果它有助于解释,仍然欢迎你提供它)。我正在寻找的是解决这个问题的想法,或者我可以自己实现的解决方案。
提前致谢!

最佳答案

首先,感谢wlui155的帮助。
对于任何感兴趣的人,我编写了一个 BFS 算法,其作用如下:
定义:
条目:包含已用数字和总和索引的结构
BSet:只能包含唯一条目的有序集
算法:

  • 来自 BSet 的最大金额的流行条目
  • 为每个列表创建一个克隆
  • 在每个克隆中前进一个不同的索引
  • 将新条目放入 BSet
  • 打印当前条目
  • 转到 1。

  • 现在,您只需确保在弹出条目后不会再次出现条目。这可以通过包含当前总和的所有组合的单独集合来确保。一旦当前总和变小,这个集合就可以被清除。
    如果您有改进的想法,欢迎告诉我。

    关于list - 使用每组的一个数字查找多组中的数字总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67026580/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com