HNUCM 2018級《演算法分析與設計》練習三

2021-10-03 10:45:09 字數 2222 閱讀 1062

前言:

遞迴拓展:全排列&整數劃分

題意:

給定一數字n,判斷1~n中,恰好有兩個素因子的數的個數

題解:

由於n<=3000,所以暴力可以過,對1~n中每個數枚舉判斷即可

題意:

給乙個由多個單詞組成的字串,對每個單詞逆序輸出

題解:

直接遍歷一遍陣列,然後遇到空格對前面的單詞逆序輸出即可,當然別忘記了最後乙個單詞

題意:

給定兩個字串,判斷兩個字串**現的字元種類和每個字元的數量是否相同

是,輸出:true,否,輸出:false

題解:

當然會c++,map肯定最香了。

不會的話,也沒關係,由於字元對應的ascii碼,最大也不過才127,於是我們開個130的陣列即可,感覺這方法比map要更好

題意:

給定矩陣的四個頂點和需要判斷的乙個點,求點是否在矩形內

題解:

如果不會計算幾何和叉乘等相關知識的話,的確會有點難,之前寫過一篇部落格,那裡有詳講:

判斷點是否在矩形內

題意:

青蛙可以一次跳一級,一次跳兩級…一次跳n級,求青蛙跳n級有多少種方案

題解:

f(n)=f(1)+f(2)+f(3)+…+f(n-1)+1

f(n-1)=f(1)+f(2)+f(3)+…+f(n-2)+1

兩者相合併得:

f(n)=2*f(n-1)

這樣其實就可以做出來了,

但是還可以繼續推到一般式,而不用遞推式

f(1)=1

f(2)=2

f(3)=4

f(4)=8

…可以推出:

f(n)=2^(n-1)

題意:

給定乙個整數n,表示字串的長度,其中字串由a~z;n=1時就是"a"

題解:

經典的遞迴運用之——全排列

void

perm

(int s,

int e)

printf

("\n");

return;}

for(

int i=s;i<=e;i++

)return

;}

呼叫perm(0,n-1)即可

題意:

1~9,求構成兩個數,滿足num1/num2=1/3;

題解:

同樣是全排列問題

題意:

給定乙個整數n,求能劃分的方案數

題解:

經典遞迴運用之——整數劃分

}呼叫fx(n,n)即可

題意:

n個人來回報數,當報的數為7的倍數或者包含7時,拍掌

問編號為m的人,拍掌k次對應的數

題解:

經典的約瑟夫環問題

由於資料不大,可以直接模擬

題意:

兩個相同的盒子,開始時:乙個裝n個球,乙個裝乙個球,alice和bob輪流操作

每次選擇乙個球少的盒子,將盒子中的球倒光。

當無法操作時,那個人就輸了

題解:

簡單博弈

intfx(

int n)

判斷fx(n)即

演算法設計與分析

輸入輸出 確定性有窮性 np類問題是非確定性計算模型下的易驗證問題類。所有可以在多項式時間內求解的判定問題構成p類問題 1 二分搜尋技術 二分搜尋演算法的基本思路是對給定已排好序的n個元素a 0 n 1 在這n個元素中找出乙個特定元素x。運用分治的思想,將n個元素以n 2為中心對半分。if x a ...

演算法分析與設計

分析,此題可以用動態規劃來做。子問題為 max i max i 1 0 max i 1 nums i nums i max i 表示以nums i 結尾的子串的最大和,最後返回最大的那個即為所求,複雜度為o n class solution return max 另一種實現方法,更加簡潔,即從前往後...

演算法設計與分析

ylbtech miscellaneos 演算法設計與分析 a,返回頂部1,演算法設計與分析 是2009年國防工業出版社出版的圖書,作者是張德富。書主要取材於演算法設計與分析領域的經典內容,並介紹了演算法設計的發展趨勢。內容主要包括非常經典的演算法設計技術,例如遞迴與分治 動態規劃 貪心 回溯 分支...