我們大家都知道去大公司面試一般都會有他們自己的一套面試題目,下面我們來看看關于php面試題之新浪網面試試題.
PHP實例代碼如下:
- <?php
- /*
- * filename: kingmonkey.php
- * author: luochuan wang
- * date: April 2nd, 2009
- * descript: an arithmetic to a program
- * program:
- 一群猴子排成一圈,按1,2,...,n依次編號。
- 然后從第1只開始數,數到第m只,把它踢出圈,
- 從它后面再開始數, 再數到第m只,在把它踢出去...,
- 如此不停的進行下去, 直到最后只剩下一只猴子為止,那只猴子就叫做大王。
- 要求編程模擬此過程,輸入m、n, 輸出最后那個大王的編號。
- */
- function getKingMokey($n, $m)
- {
- $monkey[0] = 0;
- //將1-n只猴子順序編號 入數組中
- for($i= 1; $i<= $n; $i++)
- {
- $monkey[$i] = $i;
- }
- $len = count($monkey);
- //循環遍歷數組元素(猴子編號)
- for($i= 0; $i< $len; $i= $i)
- {
- $num = 0;
- /*
- * 遍歷$monkey數組,計算數組中值不為0的元素個數(剩余猴子的個數)
- * 賦值為$num,并獲取值不為0的元素的元素值
- */
- foreach($monkey as $key => $value)
- {
- if($value == 0) continue;
- $num++;
- $values = $value;
- }
- //若只剩一只猴子 則輸出該猴子編號(數組元素值) 并退出循環
- if($num == 1)
- {
- echo $values;
- exit;
- }
- /*
- * 若剩余猴子數大于1($num > 1)
- * 繼續程序
- */
- //將第$i只猴子踢出隊伍(相應數組位置元素值設為0)
- $monkey[$i] = 0;
- //打印該猴子位置
- echo $i."";
- /*
- * 獲取下一只需要踢出隊伍的猴子編號
- * 在$m值范圍內遍歷猴子 并設置$m的計數器
- * 依次取下一猴子編號
- * 若元素值為0,則該位置的猴子已被踢出隊伍
- * 若不為0,繼續獲取下一猴子編號,且計數器加1
- * 若取得的猴子編號大于數組個數
- * 則從第0只猴子開始遍歷(數組指針歸零) 步驟同上
- * 直到計數器到達$m值 * 最后獲取的$i值即為下一只需要踢出隊伍的猴子編號
- */
- //設置計數器
- for($j= 1; $j<= $m; $j++)
- {
- //猴子編號加一,遍歷下一只猴子
- $i++;
- //若該猴子未被踢出隊伍,獲取下一只猴子編號
- if($monkey[$i] > 0) continue;
- //若元素值為0,則猴子已被踢出隊伍,進而循環取下一只猴子編號
- if($monkey[$i] == 0)
- {
- //取下一只猴子編號
- for($k= $i; $k< $len; $k++)
- {
- //值為0,編號加1
- if($monkey[$k] == 0) $i++;
- //否則,編號已取得,退出
- if($monkey[$k] > 0) break;
- }
- }
- //若編號大于猴子個數,則從第0只猴子開始遍歷(數組指針歸零) 步驟同上
- if($i == $len) $i = 0;
- //同上步驟,獲取下一只猴子編號
- if($monkey[$i] == 0)
- {
- for($k= $i; $k< $len; $k++)
- {
- if($monkey[$k] == 0) $i++;
- if($monkey[$k] > 0) break;
- }
- }
- }
- }
- }
- //猴子個數
- $n = 10;
- //踢出隊伍的編號間隔值
- $m = 3;
- //調用猴王獲取函數
- getKingMokey($n, $m);
- ?>
新聞熱點
疑難解答