老题了,基本上就是用来做"栈"的训练。入门题。
蛮写一下,每次有人问就要现场写一遍也是挺麻烦的。
>代码
#include <iostream>
//栈大小
#define stackSize 10000
using namespace std;
// 判断输入字符是否为左括号
bool isLeft(char c);
// 判断输入字符是否为右括号
bool isRight(char c);
// 获取右括号对应的左括号
char getSignal(char c);
// 判断是否匹配
bool judge(char* statement);
int main(){
char statement[stackSize];
while(cin>>statement){
// 空行退出
if(statement[0] == '\0')break;
if(judge(statement)) cout<<"yes"<<endl;
else cout<<"no"<<endl;
}
return 0;
}
bool judge(char* statement){
char stack[stackSize];// 栈大小
int top = 0;// 栈顶
for(int i=0;statement[i]!='\0';i++){
if( isLeft(statement[i]) ){
// 栈溢出
if(top==stackSize-1) return false;
// 入栈
stack[top++]