專題——基礎遞推

漢諾塔問題

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<=n1f(k)f(nk+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
( n^2mn m^2)2 =1
輸入正整數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)一定滿足方程,向後遞推,直到最大就可以了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章