您的位置:首页 > 其它

平衡的括号(Parentheses Balance,UVa 673)

2015-07-23 15:15 441 查看

此题链接单击这里

=================

栈的基本应用,只能‘(’与‘[’入栈,每输入一个‘)’与‘]’就与栈顶对比,能形成‘()’与‘[]’就出栈,形成’(]’与‘[)’就输出No,当栈为空时就输出Yes。

还有单独出现‘(’‘[’‘)’‘]’都要输出No。。。。。。

附代码

#include <iostream>
#include <stack>
using namespace std;

int main()
{
int n;
cin >> n;
cin.get();
while (n--)
{
stack<char>st_ch;
int loge = 1;
char c;
while (cin.get(c) && c != '\n')
{
if (c == ')'&&loge)
{
if (st_ch.empty())
loge = 0;
else if (st_ch.top() == '(')
st_ch.pop();
else
loge = 0;
}
else if (c == ']'&&loge)
{
if (st_ch.empty())
loge = 0;
else if (st_ch.top() == '[')
st_ch.pop();
else
loge = 0;
}
else
st_ch.push(c);
}
if (st_ch.empty()&&loge)
cout << "Yes" << endl;
else
cout << "No" << endl;

}
return 0;

}


简单的栈类

#include <iostream>
#include <cstdio>
#include <stack>
using namespace std;
class Stack
{
char ch[130];
int t;
public :
Stack()
{
t=-1;
}
bool isempty()
{
if(t==-1)
return true;
else
return false;
}
void charpush(char c)
{
t++;
ch[t]=c;
}
char charpop()
{
return ch[t--];
}
char chartop()
{
return ch[t];
}

};

int main()
{
int n;
cin >> n;
cin.get();
while (n--)
{
Stack st_ch;
int loge = 1;
char c;
while (cin.get(c) && c != '\n')
{
if (c == ')'&&loge)
{
if (st_ch.isempty())
loge = 0;
else if (st_ch.chartop() == '(')
st_ch.charpop();
else
loge = 0;
}
else if (c == ']'&&loge)
{
if (st_ch.isempty())
loge = 0;
else if (st_ch.chartop() == '[')
st_ch.charpop();
else
loge = 0;
}
else
st_ch.charpush(c);
}
if (st_ch.isempty()&&loge)
cout << "Yes" << endl;
else
cout << "No" << endl;

}
return 0;

}


有问题联系企鹅791267032

邮箱地址….wutanrong@Hotmail.com
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: