括号配对问题
来源:互联网 发布:数据库安全系统 编辑:程序博客网 时间:2024/04/28 21:13
/******************************************************************************
*@Description: 括号配对问题 时间限制:3000 ms | 内存限制:65535 KB
*难度:3
*描述
*现在,有一行括号序列,请你检查这行括号是否配对。
*输入
*第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每
*组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。
*数据保证S中只含有"[","]","(",")"四种字符
*输出
*每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配
*对则输出No
*样例输入
*3
*[(])
*(])
*([[]()])样例输出
*No
*No
*Yes
*@Author: Steven
*@datetime: 2013-05-30
*******************************************************************************/
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
#include <cstring>
const int g_rows = 5;
const int g_cols = 40;
void calculate(void);
bool isMatch(char *p);
int main()
{
calculate();
return 0;
}
///////////////////////////////////////
void calculate(void)
{
char ch[g_rows][g_cols];
int n, i;
cin>>n;
for (i = 0; i < n; i++)
{
cin>>ch[i];
}
for (i = 0; i < n; i++)
{
if (isMatch(&ch[i][0]))
{
cout<<"Yes"<<endl;
}
else
{
cout<<"No"<<endl;
}
}
}
////////////////////////////////////////
//判断一个字符串是否是括号配对
bool isMatch(char *p)
{
int length, i, j;
length = strlen(p);
char stack[g_cols] = {'\0'};//声明一个栈用来存储未配对的符号
for (i = 0, j = 0; i < length; i++)
{
//先将第一个元素入栈
if (i == 0)
{
stack[0] = p[i];
continue;
}
//出栈
if ((stack[j]=='(' && p[i]==')') || (stack[j]=='[' && p[i]==']'))
{
j--;
}
//入栈
else
{
stack[++j] = p[i];
}
}
//判断栈是否为空
if (j == -1)
{
return true;
}
else
{
return false;
}
}
- 括号配对问题
- 括号配对问题
- 括号配对问题
- 括号配对问题
- 括号配对问题
- NYOJ - 括号配对问题
- nyoj 括号配对问题
- 括号配对问题
- 括号配对问题
- 括号配对问题
- 括号配对问题
- [ACM]括号配对问题
- NYOJ2 括号配对问题
- 括号配对问题
- 2 括号配对问题
- 括号配对问题
- 括号配对问题
- 【括号配对问题 2】
- 新浪微博下一个豆瓣
- 兄弟姐妹们,有没有啥开源的项目能加一下我吗?
- C#读取SharePoint的List中的数据及操作SharePoint
- spring注入类型
- 例解 autoconf 和 automake 生成 Makefile 文件
- 括号配对问题
- 心态、方法、态度、毅力、体力
- hdoj_2022 海选女主角
- 阿拉伯数字的金额转换成中国传统的形式
- spring jar
- linux nand 驱动
- Java基础_面向对象_求指定项 的菲(斐)波那契数列 值
- linux下automake用法(转)
- 双项选择器javascript