gpt4 book ai didi

java - 获取所有可能的组合以获得给定的没有重复数字的总和

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:43:09 25 4
gpt4 key购买 nike

我正在尝试解决数字问题:

我收到一个数字,必须计算加起来才能得到该数字的数字,有些规则使它变得更难

规则:

  • 只能是正数,总和不能包含0
  • 总和只能由6个数字组成,不能多也不能少
  • 要添加的数字可以从 1 到 45
  • 不能重复数字
  • 最大金额为255
  • 最低金额为 21
  • 一个有效的组合是 1、2、3、4、5、6,就像 6、5、4、3、2、1 或 3、4、5、1、6、2,但只算作一个组合,因为包含相同的数字但顺序不同

我一直在尝试像在背包问题中那样做,但不同的是我必须选择固定数量的数字来求和。

如果有人有解决此问题的算法想法,我将不胜感激。

最佳答案

你可以使用动态规划来解决这个问题。

dp[N][LastNumber][ElementCount] 有多少种方式产生 N 最后一个数字是 LastNumber 和元素的数量是ElementCountN = 1..255LastNumber = 1..45ElementCount = 1..6

您可以从子解决方案中获取 dp[N][LastNumber][ElementCount]dp[N-LastNumber][1][ElementCount-1] + dp[N-LastNumber][2][ElementCount-1] ... + dp[N-LastNumber][LastNumber-1][ElementCount-1]

基本情况是 dp[i][i][1] = 1 for i = 1..45

如果问有多少种方式求和M,答案是dp[M][i][6] for i = 1。 .45

关于java - 获取所有可能的组合以获得给定的没有重复数字的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39969534/

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