合法括号子段
来源:互联网 发布:传智播客 云计算大数据 编辑:程序博客网 时间:2024/05/16 12:48
有一个括号序列,现在要计算一下它有多少非空子段是合法括号序列。
合法括号序列的定义是:
1.空序列是合法括号序列。
2.如果S是合法括号序列,那么(S)是合法括号序列。
3.如果A和B都是合法括号序列,那么AB是合法括号序列。
第一行有一个整数T(1<=T<=1100000),表示测试数据的数量。
接下来T行,每一行都有一个括号序列,是一个由'('和')'组成的非空串。
所有输入的括号序列的总长度不超过1100000。
5(()()()(()(())
01312
#include<stdio.h>#include<string.h>#include<stack>#define MAX 1100005using namespace std;typedef long long ll;ll num[MAX],ans;//num[i],i之前有几个完整的括号char str[MAX];stack<int>s;ll T;int main(){ scanf("%lld",&T); while(T--){ // memset(num,0,sizeof(num));//也花费一定的时间,加上会超时 while(!s.empty()) s.pop(); ans=0; scanf("%s",str+1); ll len=strlen(str+1); ll i; for(i=1;i<=len;i++){ if(str[i]=='('){ num[i]=0; s.push(i); } else{ if(s.empty()){ num[i]=0; continue; } ans+=num[s.top()-1]+1; num[i]=num[s.top()-1]+1; // printf("%lld : %lld %lld\n",i,ans,num[i]); s.pop(); } } printf("%lld\n",ans); }return 0;}
阅读全文
0 0
- 合法括号子段
- 合法括号子段
- 1791 合法括号子段
- 51nod 合法括号子段
- 51Nod-1791-合法括号子段
- 51nod 1791 合法括号子段
- 合法括号子段 51Nod
- 合法括号子段 51Nod
- 【51Nod1791】合法括号子段
- 括号序列的最长合法子段
- 51NOD 1791 合法括号子段
- 51nod 1478 括号序列的最长合法子段
- 1478 括号序列的最长合法子段
- 51Nod-1478-括号序列的最长合法子段
- 51nod-1478 括号序列的最长合法子段
- 1478 括号序列的最长合法子段
- 51nod 1478 括号序列的最长合法子段
- 51 nod 合法括号子段 (单调栈)
- Gson解析精讲
- 计算n!中包含多少个2
- 学习笔记-图片处理技术
- saiku-3.14构建过程(根据源码略微修改)20170805
- File IO流的知识点总结
- 合法括号子段
- MFC 设置光标 SetCursor(HCURSOR hCursor)用法
- sql执行顺序
- zookeeper原理
- 复习注解基础后的总结
- ROS回顾学习(2)----连接串口和查看节点/话题消息
- 使用JAVA swing实现简单的记事本
- HDU 1517 A Multiplication Game SG打表
- 频道管理