この記事では、組み合わせ論と文字列処理の領域からの興味深い問題、「N 周期ではない別個の規則的なブラケット シーケンスを数える」について詳しく掘り下げていきます。これには、個別の有効なブラケット シーケンスを生成し、N 周期のシーケンスをフィルタリングすることが含まれます。この問題について説明し、ブルート フォース アプローチの C コード実装を提供し、テスト ケースを説明します。
整数 N が与えられた場合、タスクは、N 個の期間ではない、長さ 2N の異なる通常のブラケット シーケンスの数を数えることです。シーケンスが M 回繰り返される文字列 S として表現できる場合 (S の長さが N、M > 1)、シーケンスは N 周期です。
通常の括弧シーケンスは、元の文字の間に文字 '1' と ' ' を挿入することで正しい算術式に変換できる文字列です。たとえば、シーケンス "(())" は通常ですが、") (" と "(()" は異なります。
###方法###再帰関数を使用して、長さ 2N のすべての可能な括弧シーケンスを生成します。シーケンスの生成中に、2 つの重要なパラメーターを追跡します: 括弧のバランス (開き括弧の数は決して少なくなりません)閉じ括弧の数) と開き括弧の数 (N を超えてはなりません)。
N 期間シーケンスを除外するために、生成された各シーケンスをチェックします。シーケンスが長さ N のより小さいシーケンスの繰り返しである場合、カウントから除外します。
C 実装
N = 3 のテスト ケースを考えてみましょう。このコードは、3 周期ではない長さ 6 の 5 つの異なる通常のブラケット シーケンスをすべて生成します: ((()))、(()())、(() )()、()(())、()()().
###結論###以上がN ピリオドではない、異なる通常の括弧シーケンスの数を数えます。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。