zoukankan      html  css  js  c++  java
  • 找出n个自然数(1,2,3,……,n)中取r个数的组合

     1 <?php
     2 /**
     3  * 对于$n和$r比较小, 可以用这种方法(当n=5, r=3时)
     4  */
     5 function permutation1($n, $r)
     6 {
     7     for($i=1; $i<=$n-$r+1; ++$i)
     8     {
     9         for($j=$i+1; $j<=$n-$r+2; ++$j)
    10         {
    11             for($k=$j+1; $k<=$n-$r+3; ++$k)
    12             {
    13                 echo $i . '-' . $j . '-' . $k . '<br/>';
    14             }
    15         }
    16     }
    17 }
    18 
    19 /**
    20  * 在n个元素中找出r个元素的排列,结果保存在res中,tmp为某个排列的临时变量
    21  */
    22 function permutation2($n, $r, &$res, &$tmp)
    23 {
    24     for($i=$n; $i>=$r; --$i)
    25     {
    26         $tmp[] = $i;
    27         if($r>1)
    28         {
    29             permutation2($i-1, $r-1, $res, $tmp);
    30         } else {//$r=1, 这时保存结果
    31             $res[] = $tmp;
    32         }
    33         //回溯
    34         array_pop($tmp);
    35     }
    36 }
    37 
    38 permutation1(5,3);
    39 $res = array();
    40 $tmp = array();
    41 permutation2(5,3,$res,$tmp);
    42 echo "<pre>";
    43 print_r($res);

    找出n个自然数(1,2,3,……,n)中取r个数的组合

    例如,当n=5,r=3时,所有组合为: 
    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

  • 相关阅读:
    PHP ftp_rmdir() 函数
    PHP ftp_rename() 函数
    PHP ftp_rawlist() 函数
    PHP ftp_raw() 函数
    PHP ftp_pwd() 函数
    PHP ftp_put() 函数
    PHP ftp_pasv() 函数
    PHP ftp_nlist() 函数
    PHP ftp_nb_get() 函数
    PHP ftp_nb_fget() 函数
  • 原文地址:https://www.cnblogs.com/573583868wuy/p/8245482.html
Copyright © 2011-2022 走看看