问题标题: 酷町堂:6368 括号匹配问题

0
0
邓千陌
邓千陌
新手守护
新手守护

28分代码

#include <iostream>
#include <stack>
#include <cstring>
using namespace std;
#define MAXN 1005

typedef long long ll;

const ll mod = 1e9;
string str;
int n;
ll ans = 1;

// ll dfs(string, int = -1);

int main()
{
    ios::sync_with_stdio(false);
    cin >> str;
    stack<int> s; //记录左括号位置
    for (int i = 0; i < str.size(); i++)
    {
        ll cnt = 0, j = i;
        if (str[i] == ')')
            continue;
        s.push(i);
        while (!s.empty())
        {
            j++;
            if (str[j] == ')')
                s.pop(), cnt++;
            else
                s.push(j);
        }
        // cout << cnt << ' ' << ans << endl;
        ans = (ans * cnt) % mod;
    }
    cout << ans % mod;
    return 0;
}

// ll dfs(string s, int del_pos)
// {
//     if (del_pos != -1)
//         s.erase(s.begin() + del_pos);
//     if (s.empty())
//         return 1;
//     s.erase(s.begin());
//     // cout << s << ' ' << del_pos << endl;
//     ll cnt = 1, temp_ans = 0;
//     for (int i = 0; i < s.size() && cnt; i++)
//     {
//         if (s[i] == '(')
//             cnt++;
//         else
//             cnt--, temp_ans = (temp_ans + dfs(s, i)) % mod;
//     }
//     // cout << s << " :  " << temp_ans << endl;
//     return temp_ans;
// }
/*
(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
*/

 


0
王文博
王文博
缔造者之神
缔造者之神

后面为什么要注释掉?

0
我要回答