给出了一个程序的设计:
一个长度未知的初始数组,只有2和6。
初始阵列{2,2,2,2,2,6,6,6,6,6,6}
我们的目标是找到最小数量的数组,其和小于或等于16,使用初始数组,错误的答案将是。
4个阵列:
正确的答案是
3个阵列:
我的解决方案是逐步完成每一个可能的解决方案,跟踪所需的数组。如果前面的解决方案的数组数量相同或小于当前的数组,则抛出当前的数组。由于比较了(6,6)和(6,6)…的差异,这似乎有点紧张。
我在阅读如何迭代不同的组合。大部分的文章都与扑克有关,我相信我可以画一些类似于“21”的文章。
我希望一条“捷径”能在这里发挥作用,因为:
最后一点:我想知道如何进行…的任何信息logic..go读this..etc
谢谢,乔什
发布于 2014-09-02 19:10:21
因为您的目标只处理2s和6s,所以可以使用贪婪的算法(因为6至少是2倍)。这意味着,您只需从您的源数字中取出最适合16的最大数字,并将其添加到当前数组中。当没有新的数字适合时,启动一个新的数组。
从这种方法看来,您显然可以将其简化为源数组中的2s和6s的数量公式:换句话说,您可以做一个2s和6s的线性计数,然后使用一个恒定的时间公式来确定数组的数量。
https://stackoverflow.com/questions/25628360
复制相似问题