左神演算法基礎class8 題目5母牛產子問題

2021-10-03 19:47:32 字數 840 閱讀 3504

母牛每年生乙隻母牛,新出生的母牛成長三年後也能每年生乙隻母牛,假設不會死。求n年後,母牛的數量。

先列出圖表找規律

可以看出規律:今年生的牛等於去年牛的總和,再加上所有成熟的牛再生乙個(成熟的母牛數量),那麼成熟的牛的數量怎麼知道呢?根據題意實際就是三年前牛的總和(三年前所有的牛完全能保證成熟可以生育,而近兩年的新生的牛都未成熟)

抽象出來就是:f(n) = f(n - 1) + f(n - 3)今年的牛 = 去年的牛 + 成熟的牛

①遞迴:得出規律後,寫遞迴**就十分容易啦!注意前三年只有原始的母牛可以生育,作為遞迴停止的條件。

②非遞迴:記錄近三年的母牛數量,依舊用f(n) = f(n - 1) + f(n - 3)

int

cow(

int n)

int

cow1

(int n)

return res;

}

#include

#include

using

namespace std;

//遞迴

intcow

(int n)

//非遞迴

intcow1

(int n)

return res;

}int

main()

左神演算法基礎class5 題目6並查集實現

2.分析 3.完整 4.執行結果 並查集的作用主要有兩點 快速查兩個元素是同一集合 合併兩個集合。當集合中只有乙個元素時,這個集合的代表節點即為該元素,該元素的father也是自己。當乙個集合中有多個節點時,下層節點的father為上層節點,最上層節點的father指向自己,最上層的節點叫做這個集合...

python基礎 class8 體育競技分析

體育競技分析問題 import random def printintro print 這個程式模擬兩個選手a和b的某種競技比賽 程式執行需要a和b的能力值 以0 1之間的小數表示 def getinputs a eval input 請輸入選手a的能力值 0 1 b eval input 請輸入選...

左神演算法基礎class2 例子1荷蘭國旗問題

荷蘭國旗問題 給定乙個陣列arr,和乙個數num,請把小於num的數放在陣列的左邊,等於num的數放在陣列的中間,大於num的數放在陣列的右邊。要求額外空間複雜度o 1 時間複雜度o n 1.把陣列劃分為小於等於num的區域和大於num的區域。用變數x代表小於區域的位置。剛開始由於不存在小於等於的區...