當前位置:編程學習大全網 - 源碼下載 - 用java實現能通過南陽理工學院acm在線測評練習題第二題——括號匹配

用java實現能通過南陽理工學院acm在線測評練習題第二題——括號匹配

答案如下哦

#include<cstdio>?

#include<cstring>

#include<stack>?

using namespace std;

char str[10000 + 11];

int main()

{

int n, i, l;

scanf("%d", &n);

while (n--)

{

memset(str, '0', sizeof(str)); //將數組清零?

scanf("%s", str);

l = strlen(str);

stack<char> stk;

bool ans = true;

for (i = 0; i<l; i++)

{

if (str[i] == '(' || str[i] == '[') //如果即將被輸入的字符是前括號,那就輸入吧,就算最後只剩下它自己,那也因為不為空,而No?

stk.push(str[i]);

else if (str[i] == ')')//即將輸入的字符是後括號,如果此時棧是空的,那這是第壹個字符,肯定不行了,直接退出循環吧,唉。?

{

if (stk.empty())

{

stk.push(str[i]);

break;

}

else if (stk.top() == '(')//如果此時的棧頂是與它配對的前括號,那麽就把棧頂刪掉,即將輸入的也不用輸入了,兩個殉情了。?

stk.pop();

else

{

ans = false;//其他的任何情況,比如此時棧內已有元素,但是棧頂不和它配對,那就傷心了,別輸入了,false,跑吧。?

break;

}

}

else if (str[i] == ']')

{

if (stk.empty())

{

stk.push(str[i]);

break;

}

else if (stk.top() == '[')

stk.pop();

else

{

ans = false;

break;

}

}

}

if (!stk.empty()) ?//棧為空才對,不為空的都是false?

ans = false;

if (ans)

printf("Yes\n");

else

printf("No\n");

}

return 0;

}點擊打開鏈接

  • 上一篇:上海盛大汽車服務有限公司的業務系統
  • 下一篇:誰知道哪個gm手遊平臺好?
  • copyright 2024編程學習大全網