日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

解题报告——2017年C/C++ A组第五题 字母组串(递归)

發布時間:2024/2/28 c/c++ 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 解题报告——2017年C/C++ A组第五题 字母组串(递归) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述:

由 A,B,C 這3個字母就可以組成許多串。
比如:“A”,“AB”,“ABC”,“ABA”,“AACBB” …
?
現在,小明正在思考一個問題:
如果每個字母的個數有限定,能組成多少個已知長度的串呢?
?
他請好朋友來幫忙,很快得到了代碼,
解決方案超級簡單,然而最重要的部分卻語焉不詳。
?
請仔細分析源碼,填寫劃線部分缺少的內容。
?
對于上面的測試數據,小明口算的結果應該是:
6
19


分析與題解

對于藍橋杯的代碼填空,一個簡單粗暴且有效的方法是:瞎試,有時候,試著試著就出來了。

藍橋杯的代碼填空,大部分都是遞歸或者回溯, 往往還會給我們幾個樣例的運行結果, 而遞歸的代碼無非就是那幾種, 多試幾次就出來了。

對于本題:

什么情況下,n從i變為i+1呢? 一定是在串中多使用了一個字母, 這個字母可以是a,可以是b,也可以是c。

因此,將三種可能性相加, 結果就出來了。

也就是:

#include <stdio.h>// a個A,b個B,c個C 字母,能組成多少個不同的長度為n的串。 int f(int a, int b, int c, int n) {if(a<0 || b<0 || c<0) return 0;if(n==0) return 1; return f(a-1,b,c,n-1)+f(a,b-1,c,n-1)+f(a,b,c-1,n-1) ; // 填空 }int main() {printf("%d\n", f(1,1,1,2));printf("%d\n", f(1,2,3,3));return 0; }

PS:被前四題折磨的我。。 看到這道題仿佛看到了曙光。。


好句分享,共勉之:
一日只練一日功,一日不練十日空。

總結

以上是生活随笔為你收集整理的解题报告——2017年C/C++ A组第五题 字母组串(递归)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。