タイトル説明
2017ブルーブリッジカップソフトウェア州大会C ++大学グループA質問5「文字列」。
コードの空欄を埋める質問。これはポイントを与える伝統的な質問だと言われていますが、ポイントを与える方法を見てみましょう。
難しいことではないので、私はNi Wendiを気にせず、Luo先生は自分でそれを行うことができます。
多くの文字列は、A、B、およびCの3文字で形成できます。
例:「A」、「AB」、「ABC」、「ABA」、「AACBB」…
今、シャオミンは質問を考えています:
各文字の数が制限されている場合、既知の長さの文字列をいくつ形成できますか?
彼は良い友達に助けを求め、すぐにコードを入手しました。
解決策は非常に簡単でしたが、最も重要な部分は不明確でした。
ソースコードを注意深く分析し、下線部分に不足しているコンテンツを入力してください。
#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 ______________________________________ ; // 填空
}
int main()
{
printf("%d\n", f(1,1,1,2));
printf("%d\n", f(1,2,3,3));
return 0;
}
上記の試験データについては、暁明の経口計算の結果は、次のようになります。
6
19
注:下線部のみに欠落しているコードを入力し、任意の冗長コンテンツや説明文を提出していません。
https://blog.csdn.net/weixin_43914593/article/details/112297807
無駄はそれがQAQであると感じません
return f(a - 1, b, c, n - 1) + f(a, b - 1, c, n - 1) + f(a, b, c - 1, n - 1)
順列と組み合わせの問題の古典的な解決策-母関数