PHPクラシック面白いアルゴリズム収集(面接問題)
7691 ワード
本文はPHPの経典の面白いアルゴリズムを記録するために収集して、そして注釈と分析を加えて、自分ですでに全部試みたことがあります.
1、サルの群れがぐるぐる並んで、1、2、…、nの順に番号をつけます.そして1匹目から数えて、m匹目まで数えて、それを輪から蹴り出して、その後ろから数えて、m匹目まで数えて、それを蹴り出して...、このようにひっきりなしに進んで、最後にサルが1匹しか残っていないまで、そのサルは大王と呼ばれていました.このプロセスをプログラミングしてシミュレーションし、m、nを入力し、最後の王の番号を出力する必要があります.
1、サルの群れがぐるぐる並んで、1、2、…、nの順に番号をつけます.そして1匹目から数えて、m匹目まで数えて、それを輪から蹴り出して、その後ろから数えて、m匹目まで数えて、それを蹴り出して...、このようにひっきりなしに進んで、最後にサルが1匹しか残っていないまで、そのサルは大王と呼ばれていました.このプロセスをプログラミングしてシミュレーションし、m、nを入力し、最後の王の番号を出力する必要があります.
function king($n, $m){
$monkeys = range(1, $n); // 1 n
$i=0;
while (count($monkeys)>1) { // 1
if(($i+1)%$m==0) { //$i ;$i+1
unset($monkeys[$i]); // 0 m , , unset
} else {
array_push($monkeys,$monkeys[$i]); // 0, $i ,
unset($monkeys[$i]);
}
$i++;//$i +1, , push
}
return current($monkeys); // 1 ,
}
echo king(6,3);
2、 , 4 , , , 15 , ,20 , n 。
function niu($y){
static $num= 1; // ; 1
for ($i=1; $i <=$y ; $i++) {
if($i>=4 && $i<15){ // ,4 +1,15
$num++;
niu($y-$i); // $num, $y-$i
}else if($i==20){
$num--; //20
}
return $num;
}
3、
num=$var;
}
public function display(){
$n=$this->num;
$arr=array();
//$arr=array_fill(0,$n+1,array_fill(0,$n+1,0));
$arr[1]=array_fill(0,3,0);
$arr[1][1]=1;
echo str_pad(" ",$n*12," ");
printf("%3d",$arr[1][1]);
echo "
";
for($i=2;$i<=$n;$i++){
$arr[$i]=array_fill(0,($i+2),0);
for($j=1;$j<=$i;$j++){
if($j==1)
echo str_pad(" ",($n+1-$i)*12," ");
printf("%3d",$arr[$i][$j]=$arr[$i-1][$j-1]+$arr[$i-1][$j]);
echo " ";
}
echo"
";
}
}
}
$yh=new T('3'); //$yh=new T( );
$yh->display();
?>
4.
function maopao($arr){
$len = count($arr);
for($k=0;$k<=$len;$k++)
{
for($j=$len-1;$j>$k;$j--){
if($arr[$j]
5.
function quickSort($arr) {
//
$length = count($arr);
if($length <= 1) {
return $arr;
}
//
$base_num = $arr[0];
// ,
//
$left_array = array(); //
$right_array = array(); //
for($i=1; $i $arr[$i]) {
//
$left_array[] = $arr[$i];
} else {
//
$right_array[] = $arr[$i];
}
}
//
$left_array = quickSort($left_array);
$right_array = quickSort($right_array);
//
return array_merge($left_array, array($base_num), $right_array);
}
6. ( )
function binsearch($x,$a){
$c=count($a);
$lower=0;
$high=$c-1;
while($lower<=$high){
$middle=intval(($lower+$high)/2);
if($a[$middle]>$x){
$high=$middle-1;
} elseif($a[$middle]
7.PHP
PHP7 6,PHP7 5 , , , PHP7 BUG
8. : , , ( )
function set($str){
//
$arr = str_split($str);
//
$arr = array_flip(array_flip($arr));
//
sort($arr);
//
return implode('', $arr);
}
9.
function AllFile($dir){
if($dh = opendir($dir)){
while (($file = readdir($dh)) !== false){
if($file !='..' && $file !='.'){
if(is_dir($dir.'/'.$file)){
AllFile($dir.'/'.$file); // ,
}else{
echo $file; //
}
}
}
}
}
10. Url
function getExt($url)
{
$arr = parse_url($url);
$file = basename($arr['path']);// basename
$ext = explode('.', $file);
return $ext[count($ext)-1];
}
11. n , 1 2 , : ? : 3 , 1 2 , 2 1 , 3 1 3
function jieti($num){ //
return $num<2?1:jieti($num-1)+jieti($num-2);
}
12. PHP ,
13.
function tree($arr,$pid=0,$level=0){
static $list = array();
foreach ($arr as $v) {
// , $list , ,
if ($v['pid'] == $pid) {
$v['level'] = $level;
$list[] = $v;
tree($arr,$v['id'],$level+1);
}
}
return $list;
}
14.
//
date('Y-m-01',strtotime('-1 month'));
//
date('Y-m-t',strtotime('-1 month'));
15.
// ,
function binsearch($x,$a){
$c=count($a);
$lower=0;
$high=$c-1;
while($lower<=$high){
$middle=intval(($lower+$high)/2);
if($a[$middle]>=$x){
$high=$middle-1;
}elseif($a[$middle]<=$x ){
$lower=$middle+1;
}
}
return ' '.$a[$high].' '.$a[$lower];
}
$array = ['1','50','100','150','200','250','300'];
$a = '120';
echo binsearch($a,$array);