【问题标题】:Given an array of x length, how can I find all the unique, non-repeating combinations of a fixed length? [duplicate]给定一个 x 长度的数组,我怎样才能找到固定长度的所有唯一的、非重复的组合? [复制]
【发布时间】:2015-08-11 00:41:23
【问题描述】:

如果我有以下数组:

array(1,2,3,4,5)

如何找到所有唯一的、不重复的 3 个选择组合?

例如,这些是有效值:

[1,2,3]
[1,2,4]
[1,2,5]

但这不会是有效的:

[1,3,2]

因为它和[1,2,3]一样

【问题讨论】:

  • 你试过了吗?

标签: php algorithm


【解决方案1】:

如果您想找到所有唯一的 3 元组(不区分顺序(例如 [1,2,3] 与 [2,1,3] 相同)),您可以使用 3 个嵌套的 for 循环来完成。第一个从第一个元素开始,第二个 for 循环每次从一个元素开始,依此类推。

$arr = array(1, 2, 3, 4, 5);

for ($i = 0; $i < count($arr) - 2; $i++) {
    $value = $arr[$i];
       for($j = $i+1; $j < count($arr) - 1; $j++) {
           $value2 = $arr[$j];
           for($k = $j+1; $k < count($arr); $k++) {
               $value3 = $arr[$k];
               echo "[".$value.",".$value2.",".$value3."]\n";
           }
       }
}

输出:

[1,2,3]
[1,2,4]
[1,2,5]
[1,3,4]
[1,3,5]
[1,4,5]
[2,3,4]
[2,3,5]
[2,4,5]
[3,4,5]

PS:@JuanLopes duplicate 的问题中指出的解决方案应该是首选,因为它更通用。

【讨论】:

    猜你喜欢
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多