20170914

作者: 雨y飘零久 | 来源:发表于2017-09-14 22:12 被阅读0次

    1.如果得到随机的字串,长度和字串中出现的字符表可定义,并将字串倒序显示,如把0123456789作为基准的字串字符表,产生一个6位的字串642031,打印出的字串为 130246,可使用bash/perl/php/c任意一种。

    <?php
    function demo($stringList, $num){
      $randString = array_rand($stringList, $num);
      print_r($randString);
      echo '</br>';
      $randString = implode($randString);
      return strrev($randString);
    }
    $stringList = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
    $num = 6;
    echo $str = demo($stringList, $num);
    

    Array ( [0] => 0 [1] => 2 [2] => 4 [3] => 6 [4] => 7 [5] => 8 )
    876420

    2.array_rand(array, number)

    返回包含随机键名的数组

    3.str_split(string)

    把字符串分割到数组中

    4.排序法

    • 冒泡排序法
      思路分析:法如其名,就是像冒泡一样,每次从数组当中 冒一个最大的数出来。
      比如:
      4,2,1
      2,4,1 2,1,4 // 第一次 冒出的泡是4 比较2次 3-1
      1,2,4 // 第二次 冒出的泡是 2 比较1次 3-2
      1,2,4
    <?php
    function maoPaosort($nums){
      $count = count($nums);
      for ($i=1; $i <$count ; $i++) {
        for($k=0; $k<$count-$i; $k++){
          if($nums[$k] > $nums[$k+1]){
            $temp = $nums[$k];
            $nums[$k] = $nums[$k+1];
            $nums[$k+1] = $temp;
          }
        }
      }
      return $nums;
    }
    $nums = array(1,43,54,62,21,66,32,78,36,76,39);
    var_dump(maoPaosort($nums)); 
    
    • 选择排序法:
      选择排序法思路: (从最左开始)每次选择一个相应的数,假设这个数是最小值,并记下其下标,然后和该数下表之后的数进行比较,如果发现有比该数小的就记下下标,比较循环找到最小的那个数的下标。最后该相应的数下标和最小数的下标两个数交换。
    <?php
    function selectSort($nums){
      $count = count($nums);
      for ($i=0; $i <$count-1 ; $i++) {
        $min = $i;
        for ($k=$i+1; $k <$count ; $k++) {
          if($nums[$min] > $nums[$k]){
            $min = $k;
          }
        }
        if($i != $min){
          $temp = $nums[$i];
          $nums[$i] = $nums[$min];
          $nums[$min] = $temp;
        }
      }
      return $nums;
    }
    $nums = array(1,43,54,62,21,99,32,78,36,76,39);
    var_dump(selectSort($nums));
    
    • 插入排序法
      将要排序的元素插入到已经假定排序好的数组的指定位置。
    <?php
    function insertSort($nums){
      $count = count($nums);
      for ($i=1; $i < $count; $i++) {
        $temp = $nums[$i];
        for ($k=$i-1; $k >= 0 ; $k--) {
          if($temp < $nums[$k]){
            $nums[$k+1] = $nums[$k];
            $nums[$k] = $temp;
          }else{
            break;
          }
        }
      }
      return $nums;
    }
    $nums = array(1,43,54,62,21,99,32,78,36,76,39);
    var_dump(insertSort($nums));
    
    • 快速排序法
    <?php
    function quickSort($nums){
        $count = count($nums);
        if($count<=1){
          return $nums;
        }
    
        $num = $nums[0];
        $arr_left = array();
        $arr_right = array();
    
        for($i=1;$i<$count;$i++){
          if($nums[$i] < $num){
            $arr_left[] = $nums[$i];
          }else{
            $arr_right[] = $nums[$i];
          }
        }
        $arr_left = quickSort($arr_left);
        $arr_right = quickSort($arr_right);
    
        return array_merge($arr_left, array($num), $arr_right);
    
    }
    $nums = array(1, 33, 55, 3, 32);
    var_dump(quickSort($nums));
    
    

    5.小易准备去魔法王国采购魔法神器,购买魔法神器需要使用魔法币,但是小易现在一枚魔法币都没有,但是小易有两台魔法机器可以通过投入x(x可以为0)个魔法币产生更多的魔法币。魔法机器1:如果投入x个魔法币,魔法机器会将其变为2x+1个魔法币魔法机器2:如果投入x个魔法币,魔法机器会将其变为2x+2个魔法币小易采购魔法神器总共需要n个魔法币,所以小易只能通过两台魔法机器产生恰好n个魔法币,小易需要你帮他设计一个投入方案使他最后恰好拥有n个魔法币。

    输入描述:
    输入包括一行,包括一个正整数n(1 ≤ n ≤ 10^9),表示小易需要的魔法币数量。
    示例1
    输入
    10
    输出
    122

    <?php
    function magic($n){
     $result="";
     while($n){
       if($n % 2 ==0){
         $n = ($n - 2) / 2;
         $result = $result."2";
       }else{
         $n = ($n - 1) / 2;
         $result = $result."1";
       }
     }
     return strrev($result);
    }
    $n= 10;
    echo magic($n);
    
    122
    

    相关文章

      网友评论

          本文标题:20170914

          本文链接:https://www.haomeiwen.com/subject/igbrsxtx.html