括号匹配问题(判断以及添加)
2016-09-22 16:52
316 查看
输入
第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符
输出
每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
样例输入
3
[(])
(])
([[]()])
样例输出
No
No
Yes
【代码】
#include<iostream>
#include<stdio.h>
#define MAX 1100
char str[MAX];
using namespace std;
int main()
{ int i,n;
cin>>n;
getchar();
while(n--)
{ i=0;
while((str = getchar())!='\n') //重点
{
if(((str[i]==')'&&str[i-1]=='(') || (str[i]==']'&&str[i-1]=='[')) && i>0)
i--;
else i++;
}
printf("%s\n", i ? "No":"Yes");
}
return 0;
}
用栈的方法:http://www.cnblogs.com/ABook/archive/2016/04/17/5401038.html
**********************************************************************************************************************
输入
第一行输入一个正整数N,表示测试数据组数(N<=10)
每组测试数据都只有一行,是一个字符串S,S中只包含以上所说的四种字符,S的长度不超过100。至少添加多少个括号才能使这些括号匹配
输出
对于每组测试数据都输出一个正整数,表示最少需要添加的括号的数量。每组测试输出占一行
样例输入
4
[]
([])[]
((]
([)]
样例输出
0
0
3
2
第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符
输出
每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
样例输入
3
[(])
(])
([[]()])
样例输出
No
No
Yes
【代码】
#include<iostream>
#include<stdio.h>
#define MAX 1100
char str[MAX];
using namespace std;
int main()
{ int i,n;
cin>>n;
getchar();
while(n--)
{ i=0;
while((str = getchar())!='\n') //重点
{
if(((str[i]==')'&&str[i-1]=='(') || (str[i]==']'&&str[i-1]=='[')) && i>0)
i--;
else i++;
}
printf("%s\n", i ? "No":"Yes");
}
return 0;
}
用栈的方法:http://www.cnblogs.com/ABook/archive/2016/04/17/5401038.html
**********************************************************************************************************************
输入
第一行输入一个正整数N,表示测试数据组数(N<=10)
每组测试数据都只有一行,是一个字符串S,S中只包含以上所说的四种字符,S的长度不超过100。至少添加多少个括号才能使这些括号匹配
输出
对于每组测试数据都输出一个正整数,表示最少需要添加的括号的数量。每组测试输出占一行
样例输入
4
[]
([])[]
((]
([)]
样例输出
0
0
3
2
#include #include using namespace std; int main() { int N,i,j,k,n,dp[105][105]={0}; cin>>N; while(N--) { char a[100]; cin>>a; n=strlen(a); for(i=0; i<=n; i++) dp[i][i] = 1; for(i=2; i<=n; i++) { for(j=i-1; j>=1; j--) { dp[j][i] = dp[j][i-1]+1; for(k=j; k[i] #include #include using namespace std; int main() { int N,n; int dp[200][200]={0}; cin>>N; while(N--) { char a[200]={0}; cin>>a; n=strlen(a); for(int i=0;i
相关文章推荐
- 表达式括号匹配配对判断问题
- 利用栈结构判断括号匹配问题
- Java实现用栈判断括号匹配问题
- 栈的顺序实现以及括号匹配判断程序
- 使用文件保存数据以及在此基础上实现判断登陆账号密码匹配问题的实现
- FZU FOJ 2030 括号问题【dp】||【暴搜+栈判断括号匹配】
- 括号问题 下面的代码用于判断一个串中的括号是否匹配 所谓匹配是指不同类型的括号必须左右呼应,可以相互包含,但不能交叉
- 二分图最大(基数)匹配以及与其等价的几个问题
- 如何解决Visual c++不能打开文件以及工程不能添加文件的问题
- 字符串中左右括号匹配判断
- 如何解决Visual c++不能打开文件以及工程不能添加文件的问题(转)
- 关于动态添加TabPanel遇到的问题以及思考
- 括号匹配问题
- 括号匹配问题
- 栈的链表实现,以及编译原理中的括号匹配
- 括号匹配问题
- 数据结构之SeqStack---堆栈应用---括号匹配问题
- 括号匹配问题 栈的应用 C语言实现
- 实验三、2栈实现括号匹配问题
- 反向工程之四则混合运算优先级判断--加括号问题