括號匹配 棧

2021-08-17 06:24:30 字數 794 閱讀 2132

蒜頭君在紙上寫了乙個串,只包含'('')'。乙個'('能唯一匹配乙個')',但是乙個匹配的'('必須出現在')'之前。請判斷蒜頭君寫的字串能否括號完全匹配,如果能,輸出配對的括號的位置(匹配的括號不可以交叉,只能巢狀)。

一行輸入乙個字串只含有'('')',輸入的字串長度不大於 50000

。如果輸入括號不能匹配,輸出一行"no",否則輸出一行"yes",接下裡若干行每行輸出 2

個整數,用空格隔開,表示所有匹配對的括號的位置(下標從 1

開始)。你可以按照任意順序輸出。

本題答案不唯一,符合要求的答案均正確

樣例輸入1

(())

樣例輸出1

yes

1 42 3

樣例輸入2

()()

樣例輸出2

yes

1 23 4

#includeusing namespace std;

struct node f[30000];

int main(){

string s;

cin>>s;

int flag=1,k=0;//flag==1正確匹配

stackst;

for(int i=0;i

棧括號匹配

input 輸入包括多組測試資料,每組資料是乙個字串,字串只包含 等字元。output 對於每組資料輸出 yes 表示當前字串中的括號是匹配的,否則輸出 no 不包括引號 sampleinput sampleoutput yes no題解 利用棧 includeusing namespace std...

棧 括號匹配

括號匹配,棧的經典題目,將左括號入站,然後遇到右括號就詢問棧頂是不是與之相匹配的左括號,如果是,出棧,不是,匹配失敗。注意這個題目是多組輸入,而且包含空格,所以需要用 gets讀入。include include include include using namespace std typedef...

棧 括號匹配

include include define max size 1024 define seqstack true 1 define seqstack false 0 掃瞄字串,如果碰到左括號,直接入棧 如果碰到右括號,從棧頂彈出括號,判斷是否是左括號,如果是則匹配成功 陣列模擬棧的順序儲存 typ...