首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >比迭代所有组合更简单的解决方案

比迭代所有组合更简单的解决方案
EN

Stack Overflow用户
提问于 2014-09-02 16:43:30
回答 1查看 102关注 0票数 0

给出了一个程序的设计:

一个长度未知的初始数组,只有2和6。

初始阵列{2,2,2,2,2,6,6,6,6,6,6}

我们的目标是找到最小数量的数组,其和小于或等于16,使用初始数组,错误的答案将是

4个阵列:

  • 数组1 {2,2,2,2,2,2}
  • 数组2 {6,6}
  • 数组3 {6,6}
  • 数组4 {6,6}

正确的答案是

3个阵列:

  • 数组1 {6,6,2,2}
  • 数组2 {6,6,2,2}
  • 数组3 {6,6,2,2}

我的解决方案是逐步完成每一个可能的解决方案,跟踪所需的数组。如果前面的解决方案的数组数量相同或小于当前的数组,则抛出当前的数组。由于比较了(6,6)和(6,6)…的差异,这似乎有点紧张。

我在阅读如何迭代不同的组合。大部分的文章都与扑克有关,我相信我可以画一些类似于“21”的文章。

我希望一条“捷径”能在这里发挥作用,因为:

  1. 可能的条目只有2和6。
  2. 总计不到16…不能过去

最后一点:我想知道如何进行…的任何信息logic..go读this..etc

谢谢,乔什

EN

回答 1

Stack Overflow用户

发布于 2014-09-02 19:10:21

因为您的目标只处理2s和6s,所以可以使用贪婪的算法(因为6至少是2倍)。这意味着,您只需从您的源数字中取出最适合16的最大数字,并将其添加到当前数组中。当没有新的数字适合时,启动一个新的数组。

从这种方法看来,您显然可以将其简化为源数组中的2s和6s的数量公式:换句话说,您可以做一个2s和6s的线性计数,然后使用一个恒定的时间公式来确定数组的数量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25628360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档