php(算法题)

算法1

<?php
header('Content-type:text/html;charset=utf-8');
$num = $_POST['number'];
$arr=explode(',',$num);
//函数移除数组中的重复的值,并返回结果数组
$arr1=array_unique($arr);
rsort($arr1);
$arr2=implode($arr1,',');
print_r($arr2);
?>

算法2

<?php
header('Content-type:text/html;charset=utf-8');

//请写一个函数,实现以下功能,并演示。(将以下划线分割的字符串转换为驼峰式)字符串“open_door” 转换成 “OpenDoor”、”make_by_id” 转换成 ”MakeById”
$str="open_door"; 
$a1=str_replace('_',' ',$str);
$b1=ucwords($a1);
$c1=str_replace(' ','',$b1);
echo $c1;
echo "<br/>";
$str1="make_by_id"; 
$a2=str_replace('_',' ',$str1);
$b2=ucwords($a2);
$c2=str_replace(' ','',$b2);
echo $c2;
echo "<br/>";

//请写一个函数,求两个日期的差数,例如2007-2-5 ~ 2007-3-6 的日期差数
$time1=strtotime('2007-2-5');
$time2=strtotime('2007-3-6');
echo ($time2-$time1)/(24*60*60);
echo "<br/>";

//请写一个函数,求一个数组中最大数和最小数的差
$arr=array('0'=>2,'1'=>4,'2'=>6);
$a=max($arr)-min($arr);
echo $a;
?>

算法3

<?php
/*
 算法1:对一个自然数做如下操作,若为偶数,则把它除以2,若为奇数,则把它乘以3加1,经过如此有限次运算后,总可以得到自然数1。
 比如22:  11  34  17  52  26  13  40  20  10  5  16  8  4  2  1
 */
$a=22;
/*while($a>1){
    if($a%2==0){
        $a=$a/2;
        echo $a;
        echo '<br/>';
    }else{
        $a=$a*3+1;
        echo $a.'<br/>';
    }
}*/

function digui($a){
    static $arr=array();
    if($a%2==0){
        $arr[]=$a/2;
        $a=$a/2;
        if($a==1){
            foreach($arr as $v){
                echo $v.'<br/>';
            }
            die;
        }else{
            return digui($a);
        }
    }else{
        $a=$a*3+1;
        $arr[]=$a;
        return digui($a);
    }
}
echo digui($a);

/*function func($a){
    static $num = array();
    if($a != 1){
        static $data=0;
        if($a%2==0){
            $a=$a/2;
            $num['o'.$data]=$a;
            $data++;
        }else{
            $a=$a*3+1;
            $num['j'.$data]=$a;
            $data++;
        }
        func($a);
    }
    return $num;
}
print_r(func(22));
*/

算法4

<?php
//给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
$arr = "1234";
$arr = str_split($arr);
if(count($arr) >= 5){
    echo "不可以超过5位";
}else{
    $arr = array_reverse($arr);
    for($i = 0; $i < count($arr); $i++){
        echo $arr[$i];
    }
}

算法5

<?php
/*
n只猴子围坐成一个圈,按顺时针方向从1到n编号。然后从1号猴子开始沿顺时针方向从1开始报数,报到m的猴子出局,再从刚出局猴子的下一个位置重新开始报数,如此重复,直至剩下一个猴子,它就是大王。设计并编写程序,实现如下功能:
(1)要求由用户输入开始时的猴子数n、报数的最后一个数m。
(2)给出当选猴王的初始编号。
*/
header("Content-type:text/html;charset=utf-8");
$n = $_POST['n'];
$m = $_POST['m'];
for($i=1;$i<=$n;$i++){
 $num[$i]=$i;
}
$a=1;
while(count($num)>1){
 if($a%$m==0){
  unset($num[$a]);
 }else{
  array_push($num,$num[$a]);
  unset($num[$a]);
 }
 $a++;
}
$dawang=implode('',$num);
echo '大王的编号为'.$dawang;

算法6

<?php
header("Content-type:text/html;charset=utf-8");
//案例要求:输入:This is an Apple on eBay;输出:Siht si na Elppa no yAbe

$name = $_POST['name'];
$arr = explode(" ",$name);
$num = count($arr);
for ($i = 0; $i < $num ; $i++) {
 $arr2[] = strtolower(strrev($arr[$i]));
 $num2 = strlen($arr2[$i]);
 for ($ii = 0; $ii < $num2 ; $ii++) {
  //echo strtoupper($arr[$i][$ii]);
  if ($arr[$i][$ii] == strtoupper($arr[$i][$ii])) {
   //echo strtoupper($arr2[$i][$ii]);
   $arr2[$i][$ii] = strtoupper($arr2[$i][$ii]);
  }
 }
 echo $arr2[$i]."&nbsp;";
}

算法7(计算缘分)

1)

//html页面

<!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <title>计算缘分</title>
  <script src="jquery.js"></script>
</head>
<body>
 <center>
  <h1>计算缘分</h1>
  <input type="text" size='10' name="name1" id="name1"> 和
   <input size='10' type="text" name="name2" id="name2">
   <button οnclick="jisuan()">计算缘分</button><br>
  <textarea name="content" id="content" cols="30" rows="10"></textarea>
  </center>
</body>
</html>
<script>
 function jisuan()
 {
  var name1=$('#name1').val();
  var name2=$('#name2').val();
  url="pro.php";
  data={'name1':name1,'name2':name2};
  $.post(url,data,function(msg){
   $('#content').html('他们之间的缘分为:'+msg);
   //alert(msg)
  });
 }
</script>

//php页面

<?php
 header("content-type:text/html;charset=utf-8");
 $name1=md5($_POST['name1']);
 $name2=md5($_POST['name2']);
 $str1=str_split($name1);
 $str2=str_split($name2);
 $new_str=array_intersect_assoc($str1, $str2);
 $data=array_keys($new_str);
 $j = 0;
 $array[$j][] = $data[0];
 for($i = 1; $i<count($data); $i++){
  if(($data[$i]-$data[$i-1]==1)){
   $array[$j][] = $data[$i];
  }else{
   $j++;
   $array[$j][] = $data[$i];
  }
 }
 $num=0;
 $num=$num+count($data)*10;
 foreach ($array as $key => $value) {
  if(count($value)>1)
  {
   $num=$num+count($value)*10;
  }
 }
 echo $num ;
?>

2)

//html页面

<meta charset="utf-8">
<input type="text" id="user1">和
<input type="text" id="user2">
<input type="button" value="计算缘分" οnclick="add()"><br>
<textarea id="yf" rows="10" cols="30"></textarea>

<script type="text/javascript">

 function  add(){
  var user1=document.getElementById('user1').value;
  var user2=document.getElementById('user2').value;
  //alert(user2);
  var ajax=new XMLHttpRequest();
  ajax.open('get','test4pro.php?user1='+user1+"&&user2="+user2);
  ajax.send();
  ajax.onreadystatechange=function(){
   if(ajax.readyState==4 && ajax.status==200){
    //alert(ajax.responseTex)
    var list= document.getElementById('yf');
    list.innerHTML="他们的缘分:"+ajax.responseText+"分";
   }
  }
 }
</script>

//php页面

<?php
 header("content-type:text/html;charset=utf-8");
 $user1=$_GET['user1'];
 $user2=$_GET['user2'];
 $u1=MD5($user1);
 $u2=MD5($user2);
 $nums=strlen($u1);
 for($i=0;$i<$nums;$i++){
  static $num=0;
  static $n=1;
  if($u1[$i]==$u2[$i]){
   if($i<$nums-1){ 
    if($u1[$i+1]==$u2[$i+1]){
     $n=$n+1;
     if($i<$nums-2){
      if($u1[$i+2]!=$u2[$i+2]){
       $n=$n+1;
      }
     }
    }
   }
   $num=$num+10;
  }
 }
 if($n>1){
  echo $num=$n*10+$num;
 }else{
  echo $num;
 }
?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值