给定一个括号序列,你需要对求出:这个括号序列的所有不同的子串中,有多少个是标准的括号序列?
一个括号序列的子串指的是这个序列从某个位置起始、到某个位置截止的子字符串。如果两个子串拥有不同的起始位置或截止位置,那么它们就被认为是括号序列的不同的子串。
标签:div bsp 匹配 fir 输出 long printf return 需要
#include <bits/stdc++.h> #define ll long long using namespace std; char s[1000005]; stack<pair<int,int> > ps; int pre,ant; int main() { scanf("%s",s); int len=strlen(s); for(int i=0;i<len;i++) { pair<int,int> now; if(s[i]==‘(‘) now.first=1; else now.first=0; if(!ps.empty()) { if(ps.top().first==1&&!now.first) { ps.pop(); if(ps.empty()) { ant+=(pre+1); pre++; } else { ant+=(ps.top().second+1); ps.top().second++; } } else { ps.push(now); } } else { ps.push(now); } } printf("%d\n",ant); return 0; }
标签:div bsp 匹配 fir 输出 long printf return 需要
原文地址:https://www.cnblogs.com/Diliiiii/p/10284752.html