母牛每年生乙隻母牛,新出生的母牛成長三年後也能每年生乙隻母牛,假設不會死。求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代表小於區域的位置。剛開始由於不存在小於等於的區...