C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

バランスの取れた括弧のすべての組み合わせをC++で印刷します


この問題では、整数nが与えられます。私たちのタスクは、n個のバランスの取れた括弧の可能なすべてのペアを印刷することです。

バランスのとれた括弧 対応するすべての開始記号の終了記号を持つ括弧のペアです。また、ペアは適切にネストする必要があります。

問題を理解するために例を見てみましょう

Input: n = 2
Output: {}{} {{}}

この問題を解決するには、ブラケットのペアを追跡する必要があります。ブラケットの初期カウントは0です。次に、ブラケットの総数がn未満になるまで、関数を再帰的に実行します。角かっこを数えます。数に基づいて角かっこを再帰的に呼び出します。開始ブラケットの数が終了よりも多い場合は、終了ブラケットを配置してから、残りのペアの数を調べます。開始ブラケットがn未満の場合は、残りのブラケットのペアを再帰的に呼び出します。

以下のコードは、ソリューションの実装を示しています

# include<iostream>
using namespace std;
# define MAX_COUNT 100
void printParenthesesPairs(int pos, int n, int open, int close){
   static char str[MAX_COUNT];
   if(close == n) {
      cout<<str<<endl;
      return;
   }
   else {
      if(open > close) {
         str[pos] = '}';
         printParenthesesPairs(pos+1, n, open, close+1);
      }
      if(open < n) {
         str[pos] = '{';
         printParenthesesPairs(pos+1, n, open+1, close);
      }
   }
}
int main() {
   int n = 3;
   cout<<"All parentheses pairs of length "<<n<<" are:\n";
   if(n > 0)
      printParenthesesPairs(0, n, 0, 0);
   getchar();
   return 0;
}
出力
All parentheses pairs of length 3 are −
{}{}{}
{}{{}}
{{}}{}
{{}{}}
{{{}}}
です。
  1. C++で指定された合計ですべてのペアを印刷します

    この問題では、整数の配列と整数の合計が与えられ、合計が合計値に等しい整数のすべてのペアを出力する必要があります。 問題を理解するために例を見てみましょう: 入力- 配列={1、6、-2、3}合計=4 出力- (1、3)、(6、-2) ここでは、指定された合計値のペアが必要です。 問​​題の簡単な解決策は、合計を生成する要素のペアをチェックすることです。これは、配列をトラバースして、合計値となる配列内の数値を見つけることで実行できます。 例 このプログラムは解決策を説明します- #include <iostream> using namespace std; int prin

  2. 文字列のすべての回文順列をC++で出力します

    この問題では、文字列が与えられ、その文字列の文字から可能なすべての回文順列を印刷する必要があります。 問題を理解するために例を見てみましょう- 入力- string =‘aabb’ 出力- アババーブ この問題を解決するには、文字列の文字を取得し、これらの文字を使用してすべての回文文字列を1つずつ生成する必要があります。 ステップ1 −文字列が回文であるかどうかを確認し、「不可能」と印刷します。 ’でない場合。 ステップ2 −回文を作成できる場合は、半分にして、辞書式順序で文字列の各文字を選択します。 ステップ3 −作成された順列をトラバースし、偶数の長さの文字列の場合は半分を反