PHP面试题目

29个成员

数字的组合题

发表于 2015-12-17 1517 次查看

 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

通过写一个方法来实现。

6回复
  • 2楼 关关 2015-12-17

    <?php

    function n2m($n){
        if($n == 1)
        {
            return $n;
        }
        else
        {
            return $n*n2m($n-1);
        }
    }

    $ttt = n2m(4)/(n2m(4-3)*n2m(3));
    echo $ttt;
    ?>

     

    知道思路,但是函数不知道怎么调用angry

  • 3楼 朕扮皇 2015-12-17

    <?php 

    //分成四组
    for($i=0;$i<4;$i++){
        $arr = array('1','2','3','4');
        unset($arr[$i]);
        a($arr);
    }
    //每组输出六个不同的
    function a($arr){
        $temp = 0;
        $string = implode(',',$arr);
        $arr = explode(',', $string);
        
        foreach ($arr as $k=>$v){
            echo implode('', $arr)."<br/>";
            $arr = array_reverse($arr);
            echo implode('',$arr)."<br/>";
           
            
            $temp = $arr[$k];
            $arr[$k] = $arr[$k+1];
            $arr[$k+1] = $temp;
            echo implode('', $arr)."<br/>"; 
            $arr = array_reverse($arr);
            echo implode('',$arr)."<br/>";
            
            
            $temp = $arr[$k];
            $arr[$k] = $arr[$k+1];
            $arr[$k+1] = $temp;
            echo implode('', $arr)."<br/>";
            $arr = array_reverse($arr);
            echo implode('',$arr)."<br/>";
            
            //执行一次就退出进入下一组
            break;
        }
    }

    ?>

    • 朕扮皇 2015-12-17
      方法大意是:输出第一个后就倒叙输出第二个,然后调换位置输出第三个,然后再倒叙......这样就输出六个不同的了
  • 4楼 leoma 2015-12-17

    <?php 

    function Run(){
        for($i=1;$i<=4;$i++){
            for($k=1;$k<=4;$k++){
                for($w=1;$w<=4;$w++){
                    if($i!=$k & $i!=$w & $w!=$k){
                        echo $i.$k.$w;
                        echo "<br/>"; 
                    } 
                }
            }
        }
    }
    Run();

    ?>

  • 5楼 zeroSea 2015-12-18

    function add1($n,$m){ $num1 = $n; for($j=$n;$j>($n-$m+1);$j--){ $num1 = $num1*($j-1); } return $num1; } echo add1(4,3)."<p>";//$n1到最大数,$m是位数,此方法求的是一共有多少个不重复的数 function add2($n,$m){ $num_min = null; $num2_max = null; for($i=$m;$i>0;$i--){ $num_min = $num_min."1"; $num2_max = $num2_max.$n; } for($j=$num_min;$j<=$num2_max;$j++){ $arr1 =str_split($j); //将整数转换成数组 $num1 = count($arr1); //统计数组元素个数 $arr2 = array_unique($arr1); //合并相同元素 $num2 = count($arr2); //统计数组元素个数 if($num1<=$num2){ //比较大小,原来的小于等于合并后的,说明不重复,输出 echo $j." "; } } } add2(5,4);//不重复的数(注意,不要设置太大数,服务器会卡住的)

  • 6楼 zeroSea 2015-12-18

发表回复
你还没有登录,请先登录注册

加入我们吧,一起学习QQ群516033298