求 整数1至50 选五位不相同相加等100 的所有组合这个数法要如何实现!?

解决方案 »

  1.   

    哈哈,偶也想知道。。偶自己弄了个太复杂了。。<?phpfor ($i = 1; $i <= 50; $i++)
    {
        for ($m = 1; $m <= 50; $m++)
        {   
            for ($n = 1; $n <= 50; $n++)
            {
                for ($o = 1; $o <= 50; $o++)
                {
                    for ($p = 1; $p <= 50; $p++)
                    {
                        if ($i + $m + $n + $o + $p == 50)
                        {
                            echo $i .'+'. $m .'+'. $n .'+'. $o .'+'. $p . '<br>';
                        }
                 
                    }
                }
            }    }
    }?>
      

  2.   


    for ($i = 1; $i <= 50; $i++)
    {
        for ($m = $i+1; $m <= 50; $m++)
        {   
            for ($n = $m+1; $n <= 50; $n++)
            {
                for ($o = $n+1; $o <= 50; $o++)
                {
                    for ($p = $o+1; $p <= 50; $p++)
                    {
                        if ($i + $m + $n + $o + $p == 50)
                        {
                            echo $i .'+'. $m .'+'. $n .'+'. $o .'+'. $p . '<br>';
                        }
                 
                    }
                }
            }    }
    }
      

  3.   

    可以用递归,但是PHP支持递归不好,所以还是用上面的枚举吧,不过可以优化一下,$i=18的时候 18 + 19 + 20 + 21 + 22 = 100以后的循环都是>100就没必要检查了。