ブルーブリッジカップ - 正規表現

参照

我々は検討する必要がある場合には、「()」と「|」、我々は見つける「()」括弧の役割は、上記のコードと言うことです範囲を定義し、我々は単にコードを聞かせて「(」1からの実行を開始A ")" これまでに。

それでは、どのよう我々はそれを制御するために、これを行うことができますか?

私たちは、サンプルの計算を分析することができます。


括弧の面では、まず今回の端部が算出した後、ブラケットを計算するに、我々は計算を続行する結果を返す、現在の計算を終了します。

これは、深い検索で、バックトラックは、(第四の質問にそれを覚えている)プロセスに非常によく似ています。

だから我々は、計算を完了するために、深い方法を見つけました。会ったとき、「()」は、我々は新しい関数を入力し、計算を続行するには、この関数の戻り値を使用します。


#include <iostream>
#include <string>
using namespace std;
string str;
int pos, len;
int dfs() {
    int num = 0, res = 0;
    while (pos < len) {
        if (str[pos] == '(') {
            pos++;
            num += dfs();
        }
        else if (str[pos] == ')') {
            pos++;
            break;
        }
        else if (str[pos] == '|') {
            pos++;
            res = max(num, res);
            num = 0;
        }
        else {
            pos++;
            num++;
        }
    }
    res = max(num, res);
    return res;
}
int main() {
    cin >> str;
    int ans = 0;
    len = str.length(), pos = 0;
    ans = dfs();
    cout << ans << endl;
    return 0;
}

公開された37元の記事 ウォン称賛12 ビュー6520

おすすめ

転載: blog.csdn.net/weixin_38960774/article/details/79413463