2022 年 6 月 C/C++ (レベル 7) 実際の試験問題分析 #中国電子学会 #国家青少年ソフトウェア プログラミング レベル試験

ここに画像の説明を挿入します

C/C++プログラミング(レベル1~8) 実際の質問は全て・こちら

質問 1: 二分木の種類は何種類ありますか?

n を入力 (1<n<13)、n 個のノードを持つ二分木の形式が何個あるかを求めます。
制限時間: 1000
メモリ制限: 65536
入力
整数 n
出力解答
サンプル
入力
3
サンプル出力
5

この問題は、動的プログラミング手法を使用して解決できます。ノードが存在する場合、二分木の種類の数を表すdp配列を定義できます。二分木の性質によれば、二分木の種の数は、その左部分木と右部分木の種に依存することがわかります。dp[i]i

具体的な動的プログラミングの再帰関係は次のとおりです。

ノードのバイナリ ツリーの場合i、ノードをルート ノードとして選択し、その左側のノードが左側のサブツリーを形成し、その右側のノードが右側のサブツリーを形成します。この分割によれば、次の関係が得られます。

dp[i] = dp[0] * dp[i-1] + dp[1] * dp[i-2] + ... + dp[i-1] * dp[0]

で、

おすすめ

転載: blog.csdn.net/gozhuyinglong/article/details/132655355