【问题标题】:How do I return an integer array the sum of which equals to a given number in php? [closed]如何返回一个整数数组,其总和等于php中的给定数字? [关闭]
【发布时间】:2015-07-19 19:46:41
【问题描述】:

输入1-1564-79 范围内的任意数字,是 (1, 2, 4, 8, 64) 任意组合

输出:此列表中的整数数组:(1, 2, 4, 8, 64) 其总和等于输入数字。

例如

  • 输入72,输出array(8, 64)
  • 输入13,输出array(1, 4、8)

【问题讨论】:

  • 我们不是代码编写服务。请向我们展示您已经尝试过的方法。
  • 我尝试了一种背包问题的方法,但这似乎对这项任务来说太过分了。
  • 向我们展示您的代码/尝试!只需编辑您的问题并添加您的代码以及您遇到的问题!
  • @StackExchanger 您在上一个问题中已经没有表现出任何努力:stackoverflow.com/q/30108691 并且 SO 不是代码编写服务。显示您的代码以及您遇到的问题并需要帮助。
  • 这是一个将数字转换为二进制的简单示例。了解如何做到这一点。

标签: php math discrete-mathematics


【解决方案1】:

由于您没有在问题中包含您的代码,因此没有人可以帮助您编写代码。但是这里有一个通用的方法,没有任何代码可以解决这个问题。

从您的输入数字和一个空数组开始,以保​​存总和元素。以降序遍历您的加数数组,将每个加数附加到您的 sum 数组并从输入数中减去它,直到输入数达到零。

【讨论】:

  • 尝试编写一些代码来实现这一点。如果它有效,那就太好了。如果没有,请将其编辑到您的问题中,人们将更有可能为您提供帮助。
  • 换句话说:如果 OP 想要他的代码而不做任何事情,他将需要聘请开发人员。 (我也有点怀疑他想做任何工作,因为他在上一个问题中已经没有表现出任何努力:stackoverflow.com/q/30108691
  • 按照我的解释,这个问题不是寻求代码方面的帮助,而是寻求生成可用算法的帮助,所以我认为它是可以回答的。如果 OP 需要帮助调试/理解代码,那么显然必须在问题中提供代码。
  • @StackExchanger 不是这里的问题,而是你的问题,不完整
【解决方案2】:

mkasberg 提供了解决方案:

   $in = 72;
   $out = array();
   $a = array_reverse(str_split((string)decbin($in)));
    foreach($a as $k => $v){
       if ($v != "0") array_push($out, pow(2,$k));
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多