【问题标题】:Finding all combinations of numbers that equal a specific number查找等于特定数字的所有数字组合
【发布时间】:2018-07-26 06:15:23
【问题描述】:

我发现了几篇关于类似内容的文章,但我对编码仍然很陌生,以至于我觉得自己越来越困惑。我选择了这个项目来开展工作,所以如果有人可以帮助我或者指出一个你认为可以最好地为我解释它的方向,这将是有帮助的,或者能够将代码分解成更小的部分。

目标 用户选择 1-150 之间的数字 该代码显示了总和等于该数字但仅使用 1-50 之间的数字且仅使用 5 位数字的所有数字组合。编号只能使用一次。

示例输入为 15 输出: 1、2、3、4、5 这等于 15

如果数字越大,输出组合就越多。

所以一般规则 5 个数字的数组(只能使用 1-50 之间的数字 每个号码只能使用一次 必须等于输入 也没有重复的数组会像 1,2,3,4,5 和 5,1,4,2,3 比较好

我正在尝试使用 Kotlin 或 Java 编写此代码,但任何东西都应该有帮助,谢谢!

【问题讨论】:

  • 您好,这似乎是一道家庭作业题。要获得帮助,您可以分享迄今为止尝试的方法。
  • 欢迎来到 StackOverflow。此问题缺少上下文或其他详细信息:请通过提供其他上下文来改进问题,最好包括您对问题的想法以及您为解决问题所做的任何尝试。这些信息可以帮助其他人识别您遇到的困难,并帮助他们写出适合您经验水平的答案。您还需要准确说明问题是什么、您的预期、您得到了什么以及任何追溯。
  • 您写了“仅使用 5 位数字”。您的意思是“仅使用五个数字”还是您的真正意思是所有数字中应该只有 5 个十进制数字?
  • 来吧,回答问题,展示更多你的作品!我有一个算法给你,可以用 Python 编码。但在你澄清问题并表明你不只是把你的作业扔给我们之前,我不会再给你任何信息了。这很容易做到。
  • @j-c 这个问题被称为“整数分区”。对该词的网络搜索应该会找到一些资源。

标签: arrays math combinations


【解决方案1】:

有趣的挑战:)
我相信following link 可能有用:

您需要做的就是用您的数组替换数组,等式末尾的值 '10' (... sum(seq) == 10]) 将替换为您选择的数字,如下所示:

import itertools 
numbers = [1, 2, 3, 7, 7, 9, 10, 11, 12, 13, 14, 15, 16]
chosen_number = 15
result = [seq for i in range(len(numbers), 0, -1) for seq in itertools.combinations(numbers, i) if sum(seq) == chosen_number]
print result 

【讨论】:

  • 谢谢,我认为这为我指明了正确的方向。非常感谢。
  • 我找到了一个网站,它实际上完全符合我从头开始构建的目标。 dcode.fr/partitions-generator 整数 N = 20 正好是 M 数字,M = 5 只有这些数字:1,2,3....... (1-20) 例如,仅检查没有重复的分区。它产生了 7 个结果
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-06
  • 1970-01-01
  • 2022-11-23
  • 2014-02-19
  • 2018-07-20
相关资源
最近更新 更多