漢諾塔問題
Hanoi塔由n個大小不同的圓盤和三根木柱a,b,c組成。開始時,這n個圓盤由大到小依次套在a柱上,如圖所示。
要求把a柱上n個圓盤按下述規則移到c柱上:
(1)一次只能移一個圓盤;
(2)圓盤只能在三個柱上存放;
(3)在移動過程中,不允許大盤壓小盤。
問將這n個盤子從a柱移動到c柱上,總計需要移動多少次盤子?
- 直接想不好想。先假設移動直徑爲1~n-1的原盤到C,再移動直徑爲n的原盤到B上,再將直徑爲1~n-1的原盤移動到B上。
- f(n)=2*f(n-1)+1
Fibonacci數列
一.兔子繁殖
如果一對兔子每月能生一對小兔(一雄一雌),而每對小兔在它出生後的一個月成熟,出生後兩個月,能開始生一對小兔,之後每月生一對小兔,假定在不發生死亡的情況下,由一對出生的小兔開始,50個月後會有多少對兔子?
- f(n)爲第n月的所有兔子數=第n月成熟的兔子+第n月初生的兔子
- 第n月成熟的兔子 = f(n-1) ,因爲過一個月就可以成熟
- 第n月初生的兔子 = 第n-1月成熟的兔子 = 第n-2月的兔子總和,即f(n-2)
- f(n)=f(n-1)+f(n-2)
二.完美覆蓋
有2×n的一個長方形棋盤,用一些1×2的骨牌鋪滿方格.例如n=3時,在2×3的棋盤上用1×2的骨片覆蓋,共有3種鋪法。試對給出的任意一個n(n>0),輸出鋪法總數.
- 1 .f(n)=第一列一個豎放+前兩列兩個橫放=f(n-1)+f(n-2)
- 2 .規定第i列爲第一個豎放的位置,
- n爲奇數,f(n)=f(n-1)+f(n-3)+f(n-5)+…+f(0)
- n爲偶數,f(n)=f(n-1)+f(n-3)+f(n-5)+…+f(1) +1(加上沒有豎放的情況)
Calatan數 f(n+1)=f(n)*(4*n-6)/n
一.凸多邊形的三角形剖分
在一個凸多邊形中,通過若干條互不相交的對角線,把這個多邊形剖分成了若干個三角形,輸入凸多邊形的邊數n,求不同剖分的方案數C(n)。例如當n=5時,有5種不同的方案.
- 邊(1,n)終究會包含在一個三角形中,枚舉三角形(1,n,k),
f(n)=∑2<=k<=n−1f(k)∗f(n−k+1)
f(2)是一條線段
危險的組合
在一個長度爲n的字符串中,只包含L和U,如果3個U連續出現就非法,求給定長度n的非法串的數量。
- 非法=總共-合法
- 從第i個位置開始有三個連續的U,強制規定i-1不能放U,[1,i-2]是不能出現3個連續U的方案數=[1,i-2]總共的-[1,i-2]合法的。
第二類Stirling數
n個有區別的球放到m個相同的盒子中,要求無一空盒,其不同的方案數用S(n,m)表示,稱爲第二類Stirling數。
- 對於球i,要麼單獨放一個盒子,要麼等其他的球放完了之後,隨便找個位置和其他球一起放。
- f(n,m)=f(n-1,m-1)+f(n-1,m)*m
極值問題
已知m、n爲整數,且滿足下列兩個條件:
1<= m, n <= k
輸入正整數k ,(1<=k<=10^9),求一組滿足上述兩個條件的m,n ,並且使m2+n2的值最大。
- (n^2-mn-m^2)^2=(m^2+nm-n^2)^2
=[(n+m)^2-n(n+m)-n^2]^2
其中:n’=m+n,m’=n。 - 可知,(1,1)一定滿足方程,向後遞推,直到最大就可以了。