算法题
1.题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下 的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。 1.程序分析:采取逆向思维的方法,从后往前推断。
public function actionMonkeyeat(){
static $num=0;
function dayNum($day){
$one=1;
for($i=0;$i<$day;$i++){
if($num==0){
$num=($one+1)*2;
}else{
$num=($num+1)*2;
}
}
return $num;
}
echo dayNum(10);
}
2.冒泡排序:
冒泡排序是一种入门的排序方法,网上说很简单,但一开始我还真没明白hao to it works!简单的说冒泡就是通过循环使较小的数像气泡一样一点点往上飘。
public function actionPaixu(){
$array=array(11,3,16,8,10,7);
for($i=0;$i<count($array);$i++){
for($j=$i+1;$j<count($array);$j++){
if($array[$i]<$array[$j]){
$temp=$array[$j];
$array[$j]=$array[$i];
$array[$i]=$temp;
}
print_r($array);
echo '<br>';
}
}
for($i=count($array);$i>=0;$i--){
for($j=$i-1;$j>=0;$j--){
if($array[$i]>$array[$j]){
$temp=$array[$i];
$array[$i]=$array[$j];
$array[$j]=$temp;
}
}
print_r($array);
echo '<br>';
}
print_r($array);
die();
}
3.php组合
function zh($array,$num){
$array=array(1,2,3,4,5);
global $st;
$st=isset($st)?$st:0;
for($i=$st;$i<$num+$st-1;$i++){
$stv=$stv.','.$array[$i];
}
for($i=$st+2;$i<count($array);$i++){
$s[]=$stv.','.$array[$i];
}
echo $stv.'<br>';
global $result;
$result[]=$s;
print_r($stv);
$st++;
if($st<count($array)-1){
zh($array,$num);
}
return $result;
}
$aaa=zh($array,3);
print_r($aaa);
die;
}