河南省藍橋杯第八屆省賽 5 字母組串

2021-10-05 07:14:49 字數 931 閱讀 8867

題目描述:

由 a,b,c 這3個字母就可以組成許多串。

比如:"a","ab","abc","aba","aacbb" ....

現在,小明正在思考乙個問題:

如果每個字母的個數有限定,能組成多少個已知長度的串呢?

他請好朋友來幫忙,很快得到了**,

解決方案超級簡單,然而最重要的部分卻語焉不詳。

請仔細分析原始碼,填寫劃線部分缺少的內容。

#include

// a個a,b個b,c個c 字母,能組成多少個不同的長度為n的串。

int f(int a, int b, int c, int n)

int main()

對於上面的測試資料,小明口算的結果應該是:619

注意:只填寫劃線部分缺少的**,不要提交任何多餘內容或說明性文字。

分析:這種填空題一般都是遞迴的關鍵語句,所以要弄清遞迴的結構

這題對於我而言,理解起來有些不容易,需要舉個簡單的栗子:

比如1a,1b,1c,長度為2

顯然答案是ab,ac,bc,ba,ca,cb

拿掉以a結尾的,字串長度-1,少個a,f(0,1,1,1)=,若是在末尾加上a,則剛好是ba,ca

拿掉以b結尾的,字串長度-1,少個b,f(1,0,1,1)=,若是在末尾加上b,則剛好是ab,cb

拿掉以c結尾的,字串長度-1,少個c,f(1,1,0,1)=,若是在末尾加上c,則剛好是ac,bc

所以每個情況等於分別拿掉a,b,c的情況相加

**如下:

#includeusing namespace std;

// a個a,b個b,c個c 字母,能組成多少個不同的長度為n的串。

int f(int a, int b, int c, int n)

int main()

河南省藍橋杯第八屆省賽 7 正則問題

題目描述 考慮一種簡單的正規表示式 只由 x 組成的正規表示式。小明想求出這個正規表示式能接受的最長字串的長度。例如 xx x x xx xx 能接受的最長字串是 長度是6。輸入 乙個由x 組成的正規表示式。輸入長度不超過100,保證合法。輸出 這個正規表示式能接受的最長字串的長度。例如,輸入 xx...

河南省藍橋杯第八屆省賽 9 分巧克力

題目描述 兒童節那天有k位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友們。小明一共有n塊巧克力,其中第i塊是hi x wi的方格組成的長方形。為了公平起見,小明需要從這 n 塊巧克力中切出k塊巧克力分給小朋友們。切出的巧克力需要滿足 1.形狀是正方形,邊長是整數 2.大小相同 例如一塊6x5...

河南省藍橋杯第八屆省賽 10 油漆面積

題目描述 x星球的一批考古機械人正在一片廢墟上考古。該區域的地面堅硬如石 平整如鏡。管理人員為方便,建立了標準的直角座標系。每個機械人都各有特長 身懷絕技。它們感興趣的內容也不相同。經過各種測量,每個機械人都會報告乙個或多個矩形區域,作為優先考古的區域。矩形的表示格式為 x1,y1,x2,y2 代表...