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

n個の有効なブラケットシーケンスを見つけるC++プログラム


数nがあるとします。ご存知のように、角かっこシーケンスは文字「(」と「)」のみを含む文字列です。有効なブラケットシーケンスは、シーケンスの元の文字の間に文字「1」と「+」を挿入することにより、正しい算術式に変換できるブラケットシーケンスです。したがって、角かっこシーケンスが「()()」のような場合、「(1)+(1)」のように1を入れることができるため、これは有効です。番号nから、長さ2nの有効なブラケットシーケンスを正確にn個見つける必要があります。

したがって、入力がn =4の場合、出力は["()()()()"、 "(())()()"、 "((()))()"、 "(((())))"]

ステップ

これを解決するには、次の手順に従います-

for initialize k := 1, when k <= n, update (increase k by 1), do:
   for initialize i := 1, when i <= k, update (increase i by 1), do:
      print "("
   for initialize i := 1, when i <= k, update (increase i by 1), do:
      print ")"
   for initialize i := k + 1, when i <= n, update (increase i by 1), do:
      print "()"
   go to next line

理解を深めるために、次の実装を見てみましょう-

#include <bits/stdc++.h>
using namespace std;

void solve(int n) {
   for (int k = 1; k <= n; k++) {
      for (int i = 1; i <= k; i++)
         cout << "(";
      for (int i = 1; i <= k; i++)
         cout << ")";
      for (int i = k + 1; i <= n; i++)
         cout << "()";
      cout << endl;
   }
}
int main() {
   int n = 4;
   solve(n);
}

入力

4

出力

()()()()
(())()()
((()))()
(((())))

  1. C++で三角形の図心を見つけるプログラム

    この問題では、三角形の3つの頂点の座標を示す2D配列が与えられます。私たちのタスクは、C++で三角形のセントロイドを見つけるプログラムを作成することです。 セントロイド 三角形の3つの中央値は、三角形の3つの中央値が交差する点です。 中央値 三角形の頂点は、三角形の頂点とその反対側の線の中心点を結ぶ線です。 問題を理解するために例を見てみましょう 入力 (-3, 1), (1.5, 0), (-3, -4) 出力 (-3.5, -1) 説明 Centroid (x, y) = ((-3+2.5-3)/3, (1 + 0 - 4)/3) = (-3.5, -1) ソリューションアプロ

  2. C++で平行四辺形の面積を見つけるプログラム

    この問題では、平行四辺形の底と高さを表す2つの値が与えられます。私たちのタスクは、C++で平行四辺形の領域を見つけるプログラムを作成することです。 平行四辺形 は、反対側が等しく平行な4辺の閉じた図形です。 問題を理解するために例を見てみましょう 入力 B = 20, H = 15 出力 300 説明 平行四辺形の面積=B* H =20 * 15 =300 ソリューションアプローチ この問題を解決するために、平行四辺形の面積の幾何学的公式を使用します。 Area = base * height. ソリューションの動作を説明するプログラム 例 #include <io