algorithm - 从 4 个输入数字中找出所有可能的组合,这些数字加起来为 24

标签 algorithm

其实这个问题可以归纳为:

Find all possible combinations from a given set of elements, which meets a certain criteria.

那么,有什么好的算法吗?

最佳答案

只有 16 种可能性(其中一种是将“它们都没有”加在一起,这不会给你 24),所以老式的“蛮力”算法对我来说看起来很不错:

for (unsigned int choice = 1; choice < 16; ++choice) {
    int sum = 0;
    if (choice & 1) sum += elements[0];
    if (choice & 2) sum += elements[1];
    if (choice & 4) sum += elements[2];
    if (choice & 8) sum += elements[3];
    if (sum == 24) {
        // we have a winner
    }
}

在您的问题的完全一般形式中,判断组合是否满足“特定标准”的唯一方法是评估每个组合的这些标准。鉴于有关标准的更多信息,也许您可​​以想出一些方法来避免测试每个组合并相应地构建算法,但不能没有这些细节。再次重申,蛮力为王。

关于algorithm - 从 4 个输入数字中找出所有可能的组合,这些数字加起来为 24,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10613753/

相关文章:

java - 数组和链表类的大 theta 表示法

algorithm - 人气公式? (基于 "like it"、 "comments"、 "views")

c++ - undefined symbol ... operator new(unsigned long)

algorithm - 计算出 f(n),该过程所需的单位时间操作的确切数量作为输入大小 n 的函数

algorithm - 在matlab中创建离散阶跃函数

c++ - 在 C++ 中输入的值中缺少元素

java - 如何在最长子数组长度平衡问题中找到起始位置和结束位置

python - 对形成闭环的边进行排序

javascript - 取出字符串中所有其他单词的算法?

algorithm - 眼动追踪 : finding the pupil (x, y)