C++の式で指定された開始ブラケットの終了ブラケットのインデックスを検索します
角かっこ付きの式があるとします。 1つの開始ブラケットのインデックスが指定されている場合、その終了ブラケットを見つける必要があります。したがって、式が次のようになり、(25 * 6 +(88-32 +(50/10)+20))で、開き角かっこのインデックスが6の場合、閉じ角かっこは23の位置になります。
ここでは、スタックデータ構造を使用してこの問題を解決します。指定されたインデックスから式をトラバースし、閉じ角かっこが見つかったら開き角かっこを押し始め、スタックが空のときにスタックから要素をポップして、インデックスを返します。
例
#include<iostream> #include<stack> using namespace std; void getEndingBracketIndex(string exp, int index){ int i; if(exp[index]!='('){ cout << exp << "Closing bracket of parentheses started at " << index << " present at index -1\n"; return; } stack <int> stk; for(i = index; i < exp.length(); i++){ if(exp[i] == '(') stk.push(exp[i]); else if(exp[i] == ')'){ stk.pop(); if(stk.empty()){ cout << exp << ", Closing bracket of parentheses started at " << index << " present at index " << i << ""; return; } } } cout << exp << ", Closing bracket of parentheses started at " << index << " present at index -1"; } int main() { getEndingBracketIndex("(25*6+(88-32+(50/10)+20))", 6); }
出力
(25*6+(88-32+(50/10)+20)), Closing bracket of parentheses started at 6 present at index 23
-
C++で特定のポイントセットの単純な閉じたパスを検索します
一連のポイントがあると考えてください。すべてのポイントをカバーする単純な閉じたパスを見つける必要があります。ポイントが以下のようであり、次の画像がそれらのポイント上で閉じたパスを作成していると仮定します。 パスを取得するには、次の手順に従う必要があります- 左下の点をPとして見つけます Pを中心に反時計回りに極角に基づいて他のn– 1点を並べ替えます。2点の極角が同じである場合は、距離が最短になるように配置します。 ソートされたポイントのリストをトラバースし、パスを作成します 例 #include <bits/stdc++.h> using names
-
特定のプレフィックス式の式ツリーを構築するC++プログラム
式ツリーは基本的に、式を表すために使用される二分木です。式ツリーでは、内部ノードは演算子に対応し、各リーフノードはオペランドに対応します。これは、インオーダー、プレオーダー、ポストオーダートラバーサルでプレフィックス式の式ツリーを構築するC++プログラムです。 アルゴリズム Begin class ExpressionTree which has following functions: function push() to push nodes into the tree: If stack is null &nb