fjxmt 2022-07-18 02:01 采纳率: 100%
浏览 115
已结题

PHP编程求组合的问题

在弄一个组合的有多少种的可能性。

有7个数组(列),如a、b、c、d、e、f、g,每个数列约100-200不等元素
每次从7个数组(列)取出一个元素,按顺序(即第1组元素排最前面,第7组元素排最后面)组成一个组合。

要求任意两个组合中,至少有5个元素不重复,这样的组合最多有多少种?

求大虾写出编程代码,我自己写出的代码,经常会崩溃掉,才浅。

  • 写回答

3条回答 默认 最新

  • Binary_10010 2022-07-18 18:08
    关注

    我这边随便搞了个,原数组有7个
    然后用的冒泡算的,会计算21次,然后显示出有效的次数和无效的次数
    最后会打印出哪次对比是有效的
    不是写死的,每次都是会刷新的

    <?php
        function myfunction($a,$b){
            if ($a===$b){
                return 0;
            }
            return ($a>$b)?1:-1;
        }
        $list_obj = array(
            array(1,2,3,4,5,6,7,8,9,10),
            array(1,2,3,4,5,6,7,8,9,10),
            array(1,2,3,4,5,6,7,8,9,10),
            array(1,2,3,4,5,6,7,8,9,10),
            array(1,2,3,4,5,6,7,8,9,10),
            array(1,2,3,4,5,6,7,8,9,10),
            array(1,2,3,4,5,6,7,8,9,10)
        );
        $new_list = array();
        $curr_list = array();
        for ($i=0; $i < 7; $i++) { 
            for ($j=0; $j < 7; $j++) { 
                array_push($curr_list,$list_obj[$j][rand(0,9)]);
            }
            array_push($new_list,$curr_list);
            echo "<br>";
            $curr_list = array();
        }
        print("<pre>"); // 格式化输出数组
        print_r($new_list);
        print("</pre>");
        $all_get = 0;
        $all_not = 0;
        for ($i=0; $i < 7; $i++) { 
            for ($j=$i + 1; $j < 7; $j++) { 
                $result=array_uintersect($new_list[$i],$new_list[$j],"myfunction");
                $index = number_format(count($result));
                var_dump($result);
                if($index > 2){
                    echo "无效";
                    $all_not += 1;
                }else{
                    echo "有效";
                    $all_get += 1;
                }
                echo $index."<br>";
            }
        }
        echo "有效的集合总共有".$all_get."个<br>";
        echo "无效的集合总共有".$all_not."个<br>";
    ?>
    

    img


    img


    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月1日
  • 已采纳回答 7月24日
  • 修改了问题 7月18日
  • 创建了问题 7月18日