計算機機試指南 動態規劃

2021-08-15 00:24:10 字數 1239 閱讀 5231

1.n階樓梯上樓問題

題目描述:n階樓梯上樓問題:一次可以走兩階或一階,問有多少種上樓方式。(非遞迴)

輸入:輸入包括乙個整數n(1<=n<90)

輸出:有多組測試資料,對於每組資料,輸出當樓梯階數為n時的上樓方式個數

演算法思想:到達第n階樓梯的方式有兩種:從第n-1階樓梯走一階;從第n-2階樓梯走兩階。故f(n)=f(n-1)+f(n-2)

//n階樓梯上樓問題,一次可以走一階或者兩階,上樓方式種數

#includelong long f[91];

int main()

int n;

while(scanf("%d",&n)>0)

return 0;

}

2.裝錯信封問題

問題描述:為n個朋友每人寫了一封信,求全部裝錯信封的錯誤方式種數

輸入:包含多個測試例項,每個測試例項佔一行,每行包含乙個正整數n(1輸出:對於每行輸入請輸出可能的錯誤方式數量,每個例項占用一行

演算法思想:若n號信封裝的是k號信封的信,m號信封裝的是n號信封的信,若m和k相等,則交換兩個信封內的信,除它們之外的剩餘n-2個信封都裝錯,m共有n-1種,共有(n-1)*f(n-2);若m和k不相等,則交換兩個信封後,除第n號信封之外剩餘n-1個信封都裝錯,共有(n-1)*f(n-1)

//裝錯信封

#includelong long f[21];

int main()

int n;

while(scanf("%d",&n)>0)

}

3.最長遞增子串行問題

問題描述:某一飛彈攔截系統有一缺陷,第一發炮彈能夠達到任意的高度,但是以後的每一發炮彈都不能超過前一發的高度。雷達捕捉到敵國的飛彈來襲,並觀測到飛彈依次飛來的高度,請計算這套系統最多能夠攔截多少飛彈。

輸入:每組輸入有兩行,第一行,輸入雷達捕捉到的敵國飛彈的數量k(k<=25),第二行輸入k個正整數,表示k枚飛彈的高度,按來襲飛彈的襲擊事件順序給出,以空格分隔。

輸出:每組輸出只有一行,包含乙個整數,表示最多能攔截多少飛彈

//攔截飛彈,最長子序列

#include//#includeint buf[26];

int bibuf[26];

int main()

bibuf[1]=1;

for(int i=2;i<=k;i++){

int temp=1;

for(int j=1;j

計算機機試一動態規劃例題總結 適合入門

感謝計算機機試群裡的大佬提供我們練習的機會。群號 299565515 動態規劃問題雖然 比較簡單,但是在構造遞推式時候是最難的,這個題的遞推式大家肯定都做過,沒錯,就是斐波那契數列的遞推式。f n f n 1 f n 2 為什麼是這樣呢?首先我們可以從最後一層樓梯考慮。假設有10層台階,那麼每次只能...

《王道論壇計算機考研機試指南》第七章 動態規劃

n階樓梯上樓問題 include using namespace std int f 91 int main 不容易系列之一 攔截飛彈 include include using namespace std intlist 26 按襲擊事件順序儲存各飛彈高度 int dp 26 dp i 儲存以第i...

北航計算機機試2012

vc fushic18 1.分解整數 某些整數能分解成若干個連續整數的和的形式,例如 15 1 2 3 4 5 15 4 5 6 15 7 8 某些整數不能分解為連續整數的和,例如 16 輸入 乙個整數n n 10000 輸出 整數n對應的所有分解組合,按照每個分解中的最小整數從小到大輸出,每個分解...