天天看點

有一頭母牛從第四年php,增值牛算法問題

http://topic.csdn.net/u/20120828/12/8336bd43-4a3c-4b77-bf17-2fa854c3702e.html出的一道題目如下:

一頭母牛從出生後,每兩年可以生下一頭母牛,即在第二年和第四年分别可産下一頭母牛,出生後第五年将會死去。假設農場現有一頭母牛,N年後農場的母牛數目是多少,編寫程式實作

$d = array();//隻有奇數年有值,為該年死亡的數目

$cow = array();//每年還有牛的數目

$d[3] = 0;//第3年無牛死

$d[5] = 1;//第5年1牛死

$d[7] = 1;//第7年1牛死

$cow[1] = 1;//第1年隻有一頭牛

$cow[2] = 2;//第2年隻有一頭牛

$n = 150;//計算到第$n年

for($i=3;$i<=$n;++$i){

if($i%2 == 1){//奇數年份

$cow[$i] = $cow[$i-1] - $d[$i];

}else{//偶數年份

$cow[$i] = $cow[$i-1]*2;

$d[$i+5] = $cow[$i-1];//對應5年後減計的數目

}

}

for($i=1;$i<=$n;++$i){

echo $i."年還有牛:".$cow[$i]."

";

}

?>

該解法将第一年到$n年都計算出來了,非遞歸O(n)算法,至于o(logn)算法還沒有想到,有傳說中的o(logn)解法請留言,可能是斐波那契數列方式。