程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 面試題一,面試題

面試題一,面試題

編輯:關於PHP編程

面試題一,面試題


最近在網上看見一道面試題,隨手做了一下,也作為我開始寫博客的第一篇開始。

因為我最近在學習PHP,所以我就用PHP來解決它,不過天下語言是一家,其他的語言也可參照思想。題目比較簡單,如下:

 

  大廳裡有100盞燈,每盞燈都編了號碼,分別為1-100。每盞燈由一個開關來控制。(開關按一下,燈亮,再按一下燈滅。開關的編號與被控制的燈相同。)開始時,燈是全滅的。現在按照以下規則按動開關。
  第一次,將所有的燈點亮。
  第二次,將所有2的倍數的開關按一下。
  第三次,將所有3的倍數的開關按一下。
  以此類推。第N次,將所有N的倍數的開關按一下。
  問第100次按完以後,大廳裡還有幾盞燈是亮的。

方法如 下:

 1 <?php
 2 
 3     //totle:總共的燈盞數,times:按動開關的次數
 4     function switchLight($totle,$times){
 5         //定義開關打開和關閉的狀態屬性
 6             $on=1;
 7             $off=-1;
 8         //定義一個按動開關的動作
 9             $oc=-1;
10         //建立一個數組,動態存儲燈盞數目,並初始化狀態
11             $lights=array();
12             for($i=1;$i<=$totle;$i++){
13                 $lights[$i]=$off;
14             }
15         //判斷沒有按動開關的情況
16         if($times==0){
17             return 0;
18         }
19         //循環判斷,並按動開關
20         for($j=1;$j<=$times;$j++){
21             for($k=1;$k<=$totle;$k++){
22                 if(!($k%$j))
23                     $lights[$k]*=$oc;
24             }    
25         }
26         //遍歷出所有為on的燈,並存入新數組
27         $newLights=array();
28         for($r=1;$r<=$totle;$r++){
29             if($lights[$r]==$on){
30                 $newLights[]=$r;
31             }
32         }
33         return $newLights;
34          
35     }
36     
37     $newLights=switchLight(100,100);
38     echo "結果有".count($newLights)."盞燈亮,具體如下:";
39     foreach($newLights as $light){
40         echo $light;
41         echo "\n";
42     }
43 ?>

 

  有更好的方法,會後續更新。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved