入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

几个php算法练习题

创建时间:2016-04-26 投稿人: 浏览次数:2049
1. 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? <?php $num = 0; for($i=1;$i<=4;$i++) { for($j=1;$j<=4;$j++) { for($k=1;$k<=4;$k++) { if($i != $j && $j != $k&& $i != $k) { $num = $num + 1; } } } } echo $num; ?>
2.有5个人偷了一堆苹果,准备在第二天分赃。晚上,有一人遛出来,把所有菜果分成5份,但是多了一个,顺手把这个扔给树上的猴了,自己先拿1/5藏了。   没想到其他四人也都是这么想的,都如第一个人一样分成5份把多的那一个扔给了猴,偷走了1/5。   第二天,大家分赃,也是分成5份多一个扔给猴了。最后一人分了一份。问:共有多少苹果? <?php for($i=1; ;$i++) { if($i % 5 == 1) { //第一次 $t = $i - round($i/5) - 1; if($t % 5 == 1) { //第二次 $r = $t - round($t/5) - 1; if($r % 5 == 1) { //第三次 $x = $r - round($r/5) - 1; if($x % 5 == 1) { //第四次 $y = $x - round($x/5) - 1; if($y % 5 == 1) { //第五次 $s = $y - round($y/5) - 1; if($s % 5 == 1) { echo $i; break; } } } } } } } ?>
3.一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…, 如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n,输出最后那个大王的编号。 <?php function king($n,$m) { $monkeys = range(1,$n); $i = 0; while(count($monkeys) > 1) { if(($i+1)%$m == 0) { unset($monkeys[$i]); } else { array_push($monkeys,$monkeys[$i]); unset($monkeys[$i]); } $i++; } return current($monkeys); } $king = king($n,$m); print_r($king); ?>

4. 用符号*画一个菱形图案. <?php for($i=0;$i<4;$i++){ for($j=0;$j<3-$i;$j++){ echo "&nbsp;"; } for($k=0;$k<$i+1;$k++){ echo "* "; } echo "<br/>"; } for($i=3;$i>=0;$i--) { for($x=0;$x<=3-$i;$x++) { echo "&nbsp;"; } for($y=0;$y<$i;$y++) { echo "* "; } echo "<br/>"; } ?>
5.使用五种以上方式获取一个文件的扩展名. <?php? ① function get_ext1($file_name){  return strrchr($file_name, ‘.’);  }  备注: strrchr //找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符。
② function get_ext2($file_name){  return substr($file_name, strrpos($file_name,‘.’));  }  备注: strrpos //查找字符串在另一个字符串中最后一次出现的位置。
③ function get_ext3($file_name){  return array_pop(explode(‘.’,$file_name));  }  备注: array_pop //删除数组中的最后一个元素。
④ function get_ext4($file_name){  $p = pathinfo($file_name);  return $p["extension"];  }  备注: pathinfo //以数组的形式返回文件路径的信息。
⑤ function get_ext5($file_name){  return strrev(substr(strrev($file_name), 0,strpos(strrev($file_name), ‘.’)));   } 备注: strrev //反转字符串       strpos//返回字符串在另一个字符串中第一次出现的位置。 ?>
6.实现斐波那契数列,格式为:1,1,2,3,5,8…即当前数字为前两个数字之和. <?php function feibolaqi($num) { $arr = array(); for($i=0;$i<=$num;$i++) { if($i == 1 || $i == 2) { $arr[$i-1] = 1; } else { $arr[$i-1] = $arr[$i-2] + $arr[$i-3]; } } return $arr; } ?>
************************************************************************************************** <?   //--------------------   // 基本数据结构算法  //--------------------   //二分查找(数组里查找某个元素)   function bin_sch($array,  $low, $high, $k){       if ( $low<= $high){          $mid =  intval(($low+$high)/2);           if ($array[$mid] ==  $k){              return$mid;           }elseif ( $k < $array[$mid]){              return bin_sch($array, $low,  $mid-1,$k);           }else{              return bin_sch($array, $mid+ 1, $high, $k);          }        }       return -1;   }    //顺序查找(数组里查找某个元素)   function  seq_sch($array, $n, $k){        $array[$n] = $k;        for($i=0; $i<$n; $i++){          if( $array[$i]==$k){              break;          }        }       if($i<$n){           return  $i;       }else{          return -1;       }   }    //线性表的删除(数组中实现)   function delete_array_element($array , $i)  {          $len =  count($array);          for ($j= $i; $j<$len; $j ++){                $array[$j] = $array [$j+1];         }          array_pop ($array);          return $array ;   }   //冒泡排序(数组排序)   function bubble_sort( $array)   {          $count = count( $array);         if ($count <= 0 ) return false;         for($i=0 ; $i<$count; $i ++){                for($j=$count-1 ;$j>$i; $j--){                        if($array[$j] < $array [$j-1]){                              $tmp = $array[$j];                              $array[$j] = $array[ $j-1];                             $array [$j-1] = $tmp;                        }                }          }          return $array;   }   //快速排序(数组排序)   function quick_sort($array ) {          if (count($array) <= 1) return $array;          $key = $array [0];          $left_arr  = array();         $right_arr = array();          for ($i= 1; $i<count($array );$i++){                 if ($array[ $i]<= $key)                        $left_arr[] = $array[$i];                 else                        $right_arr[] = $array[$i ];         }          $left_arr = quick_sort($left_arr );         $right_arr = quick_sort( $right_arr);         return array_merge($left_arr , array($key),$right_arr);   }  
//------------------------   // PHP内置字符串函数实现   //------------------------   //字符串长度   function strlen ($str)   {          if ($str == "" ) return 0;         $count =  0;         while (1){                 if ( $str[$count] != NULL){                       $count++;                        continue;                }else{                       break;                }          }          return $count;   }   //截取子串   function substr($str, $start,  $length=NULL)  {          if ($str== "" ||$start>strlen($str )) return;         if (($length!=NULL)&& ( $start>0)&& ($length>strlen($str)-$start)) return;          if (( $length!=NULL)&& ($start< 0)&&($length>strlen($str )+$start)) return;         if ($length ==  NULL) $length =(strlen($str ) - $start);                    if ($start < 0){                 for ($i=(strlen($str)+$start); $i<(strlen ($str)+$start+$length );$i++) {                        $substr .= $str[$i];                 }          }          if ($length  >0){                 for ($i= $start;$i<($start+$length ); $i++) {                       $substr .= $str[$i];                 }          }          if ( $length < 0){                for ($i =$start;$i<(strlen( $str)+$length); $i++) {                       $substr .=$str[$i ];                 }          }          return $substr;   }   //字符串翻转   function strrev($str)   {          if ($str == "") return 0 ;         for ($i=(strlen($str)- 1); $i>=0;$i --){                 $rev_str .= $str[$i ];         }          return $rev_str;   }  
//字符串比较   function strcmp($s1,  $s2)  {          if (strlen($s1) < strlen($s2)) return -1 ;          if (strlen($s1) > strlen( $s2))return 1;          for ($i =0; $i<strlen($s1 );$i++){                 if ($s1[ $i] == $s2[$i]){                       continue;                }else{                       returnfalse;                 }          }          return  0;  }  
//查找字符串   function  strstr($str, $substr)  {           $m = strlen($str);         $n = strlen($substr );          if ($m < $n) return false ;         for ($i=0; $i <=($m-$n+1); $i++){                 $sub = substr( $str, $i, $n);                if ( strcmp($sub, $substr) == 0)  return $i;         }          return false ;   }   //字符串替换   function str_replace($substr , $newsubstr, $str)  {           $m = strlen($str);         $n = strlen($substr );          $x = strlen($newsubstr );         if (strchr($str, $substr ) == false) returnfalse;          for ( $i=0; $i<=($m- $n+1);$i++){                  $i =strchr($str,  $substr);                 $str = str_delete ($str, $i,$n);                 $str = str_insert($str, $i, $newstr);          }          return $str ;   }  
//--------------------   // 自实现字符串处理函数  //--------------------   //插入一段字符串   function str_insert($str, $i , $substr)  {          for($j=0 ; $j<$i; $j ++){                $startstr .= $str[$j ];         }          for ($j=$i; $j <strlen($str); $j++){                 $laststr .= $str[$j ];         }          $str = ($startstr . $substr  .$laststr);          return $str ;   }   //删除一段字符串   function str_delete($str , $i, $j)   {          for ( $c=0; $c<$i; $c++){                 $startstr .= $str [$c];         }          for ($c=( $i+$j); $c<strlen($str); $c++){                 $laststr  .=$str[$c];          }           $str = ($startstr . $laststr);          return $str;   }   //复制字符串   function strcpy($s1, $s2 )   {          if (strlen($s1)==NULL || !isset( $s2)) return;         for ($i=0 ; $i<strlen($s1); $i++){                 $s2[] = $s1 [$i];         }          return $s2;   }   //连接字符串   function strcat($s1 , $s2)   {          if (!isset($s1) || !isset( $s2)) return;         $newstr = $s1 ;          for($i=0; $i <count($s); $i ++){                $newstr .= $st[$i ];         }          return $newsstr;   }   //简单编码函数(与php_decode函数对应)   function php_encode($str)   {          if ( $str=="" &&strlen( $str)>128) return false;         for( $i=0; $i<strlen ($str);$i++){                  $c =ord($str[$i ]);                 if ($c>31&& $c <107) $c += 20;                 if ($c>106&& $c <127) $c -= 75;                 $word = chr($c );                $s .= $word;         }           return $s;   }   //简单解码函数(与php_encode函数对应)   function php_decode($str)   {          if ( $str=="" &&strlen($str )>128) return false;         for( $i=0; $i<strlen ($str);$i++){                 $c  =ord($word);                 if ( $c>106&& $c<127 ) $c =$c-20;                 if ($c>31&& $c< 107) $c =$c+75 ;                 $word = chr( $c);                $s .= $word ;         }           return $s;   }   //简单加密函数(与php_decrypt函数对应)   function php_encrypt($str)   {           $encrypt_key ="abcdefghijklmnopqrstuvwxyz1234567890";           $decrypt_key ="ngzqtcobmuhelkpdawxfyivrsj2468021359";          if ( strlen($str) == 0) return false;          for ($i=0; $i<strlen($str); $i ++){                for ($j=0; $j<strlen($encrypt_key); $j ++){                       if($str[$i] == $encrypt_key [$j]){                              $enstr .=  $decrypt_key[$j];                             break;                        }                }          }          return $enstr;   }   //简单解密函数(与php_encrypt函数对应)   function php_decrypt($str)   {           $encrypt_key ="abcdefghijklmnopqrstuvwxyz1234567890";           $decrypt_key ="ngzqtcobmuhelkpdawxfyivrsj2468021359";          if ( strlen($str) == 0) return false;          for ($i=0; $i<strlen($str); $i ++){                for ($j=0; $j<strlen($decrypt_key); $j ++){                       if($str[$i] == $decrypt_key [$j]){                              $enstr .=  $encrypt_key[$j];                             break;                        }                }          }          return $enstr;   }   ?> 
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。