1.進製數模式
考慮n位二進位制數,有多少個數中不存在兩個相鄰的1。例如,3位數中有5個數符合這一要求:000、001、010、100、101。
1、試找出其中的規律
2、請給出完整**實現(引數輸入**可略)
3、試證明你找到的規律是正確的
思路:
n位的二進位制,比如3位:000 001 010 100 101
什麼規律呢,假設n位二進位制有f(n)種不相鄰的組合,
從最左邊的位置開始放,可以放0,也可以放1。
如果最左邊放0,那麼將不影響第二位的放置,從第二位放起,即有f(n-1)種。
如果最左邊放1,那麼第二位則只能放0,從第三位放起,即有f(n-2)種。
所以f(n)=f(n-1)+f(n-2)種。
另外f(1)=2(因為可以放0或者1),f(2)=3(因為可以是00,01,10)。
問題就解決了。這是很常用的演算法思想,各種遞推問題,計數問題,通常從單個方向出發,針對不同策略分別
計數。
int fibonacci(int n)
else if (n == 1)
else if (n == 2)
else
return fn;
}}
建構函式模式
已經n天沒有學習了。中間辦了好多事,關乎人生大事,所以斷了學習。貌似理由很充分。總之,今天是十一長假的第二天,沒打算出去玩,把前段時間沒學習的趕緊彌補一下吧。上回說到建立物件時用的工廠模式,減少了 重複,可是不能區分出每個例項所對應的物件,於是建構函式登場了。function createobjec...
建構函式模式
function student props student.prototype.hello function function createstudent props var xiaoming createstudent xiaoming.hello hello xiaoming 傳進乙個陣列 f...
PLSQL 過程 引數模式
又拿起plsql在看了,看到過程這一部分。procedure的引數有三種模式 int,out,in out.如果不宣告的話,預設的是in。以前在學校老師講編譯原理的時候經常提到左值和右值,現在在plsql裡又遇到這種稱呼了。in模式的值是左值,read only的。out模式的值是右值的write ...