检查重复组合

时间:2014-10-21 11:24:13

标签: php loops

所以我有一个PHP程序,它从数组中抽取三个数字,将它们相加并检查是否sum = 10。如果是,则应在显示屏上打印这些数字。

我想要做的是检查绘制的组合。例如:

First draw: 1+7+2
Second draw: 5+4+1
Third draw: 1+2+7

第一个和第三个具有相同的数字,因此不应显示第三个。不幸的是,我不知道该怎么做。

我的代码:

<?PHP
 $numb = array(1,2,3,4,5,6,7,8,9,0);

 $hm = count($numb);

 for ($a=0; $a<$hm;$a++)
  for ($b=0; $b<$hm;$b++)
   for ($c=0; $c<$hm;$c++)
   {
    $cnt = $numb[$a]+$numb[$b]+$numb[$c];

    if ($cnt == 10)
    {
     print_r ($numb[$a]);
     echo "+";
     print_r ($numb[$b]);
     echo "+";
     print_r ($numb[$c]);
     echo "<br>";
    }
   }
?>

1 个答案:

答案 0 :(得分:4)

使用提供的代码,您只需“按顺序”绘制数字,以避免重复:

$numb = array(0,1,2,3,4,5,6,7,8,9);     // <-- must be sorted from lowest to highest

for ($a = 0; $a < $hm; $a++) 
     for ($b = $a; $b < $hm; $b++)      // <-- start from $a
         for ($c = $b; $c < $hm; $c++)  // <-- start from $b

因此,组合1 + 2 + 7是可能的,但不是1 + 7 + 2,也不是7 + 1 + 2等。