面試中的演算法

2021-08-19 23:12:14 字數 1714 閱讀 4843

catalan數的定義:

令h(0)=1,h(1)=1,catalan數滿足遞推式:

h(n)= h(0)*h(n-1)+h(1)*h(n-2) + … + h(n-1)h(0) (n>=2)

遞推式可表示為:

h(n)=h(n-1)*(4*n-2)/(n+1);

遞推關係的解為:

h(n)=c(2n,n)/(n+1) (n=0,1,2,…)

1.買票找零

有2n個人排成一行進入劇場。入場費5元。其中只有n個人有一張5元鈔票,另外n人只有10元鈔票,劇院無其它鈔票,問有多少中方法使得只要有10元的人買票,售票處就有5元的鈔票找零?(將持5元者到達視作將5元入棧,持10元者到達視作使棧中某5元出棧)

題目另一種形式:有n對左括號和右括號,現在問到底有多少中括號合法匹配的組合?

2.12個高矮不同的人,排成兩排,每排必須是從矮到高排列,而且第二排比對應的第一排的人高,問排列方式有多少種?

應用公式:c(2n, n)/(n+1)。

而c(12, 6)/7 = 12*11*10*9*8*7/(7*6*5*4*3*2) = 132

注意:c(2n, n)/(n+1) = c(2n, n) - c(2n, n-1)

3.括號化

矩陣連乘: p=a1×a2×a3×……×an,依據乘法結合律,不改變其順序,只用括號表示成對的乘積,試問有幾種括號化的方案?

h(n-1)種
4.出棧次序

乙個棧(無窮大)的進棧序列為1,2,3,…,n,有多少個不同的出棧序列?

輸出序列的總數目=c(2n,n)-c(2n,n+1)=c(2n,n)/(n+1)=h(n)。
5.凸多邊形三角劃分

在乙個凸多邊形中,通過若干條互不相交的對角線,把這個多邊形劃分成了若干個三角形。任務是鍵盤上輸入凸多邊形的邊數n,求不同劃分的方案數f(n)。比如當n=6時,f(6)=14。

f(n)= h(n-2) (n=2,3,4,……)
6.一位大城市的律師在她住所以北n個街區和以東n個街區處工作。每天她走2n個街區去上班。如果她從不穿越(但可以碰到)從家到辦公室的對角線,那麼有多少條可能的道路?

7.在圓上選擇2n個點,將這些點成對連線起來使得所得到的n條線段不相交的方法數?

8.給定n個節點,能構成多少種不同的二叉搜尋樹?

( 能構成h(n)個) (這個公式的下標是從h(0)=1開始的)
定義:

這組數列是1,1,2,3,5,8,13,21,34,55,89,144,……,以至無窮。這組數列由1開頭,隨後緊接乙個1,前兩個數字相加,1+1得出第三個數是2,然後第二個數與第三個數相加,1+2得出第四個數是3。緊接著,第三個數與第四個數相加,2+3 得出第五個數是 5。以此類推。而斐波那契數列中相鄰兩項之商就接近**分割數0.618,這組數列成為斐波那契數列。

解法:

2.兔子繁殖問題

一般而言,兔子在出生三個月後,就有繁殖能力,一對兔子每個月能生出一對小兔子來。如果所有兔子都不死,那麼一年以後可以繁殖多少對兔子?

幼仔對數=前月成兔對數

成兔對數=前月成兔對數+前月幼仔對數

總體對數=本月成兔對數+本月幼仔對數

可以看出幼仔對數、成兔對數、總體對數都構成了乙個數列。這個數列有關十分明顯的特點,那是:前面相鄰兩項之和,構成了後一項。

面試 面試中遇到的演算法題

概念平面內兩條線段位置關係的判定在很多領域都有著廣泛的應用,比如遊戲 cad 圖形處理等,而兩線段交點的求解又是該演算法中重要的一環。本文將盡可能用通俗的語言詳細的描述一種主流且效能較高的判定演算法。為方便計算,對座標點的大小比較作如下定義 x座標較大的點為大,x座標相等但y座標較大的為大,x與y都...

面試中的排序演算法總結

面試中的排序演算法總結 查詢和排序演算法是演算法的入門知識,其經典思想可以用於很多演算法當中。因為其實現 較短,應用較常見。所以在面試中經常會問到排序演算法及其相關的問題。但萬變不離其宗,只要熟悉了思想,靈活運用也不是難事。一般在面試中最常考的是快速排序和歸併排序,並且經常有面試官要求現場寫出這兩種...

面試中重要的排序演算法

二分查詢,找不到則返回一。parama param key return public static int binarysearch int a,int key return 1 public static void sort int a,int left,int right public sta...