time limit: 1000 ms memory limit: 65536 k
有多組測試資料,每組測試資料有一段**,該段**可能在有多行。
每段**以ctrl+z結束。
處理到檔案結束。
每組測試資料輸出一行。
如果這段**括號匹配了,輸出 right ,否則輸出 wrong。
#include rightdescription:判斷'(',')',''配對是否合法。wrong
problem solving:這個只需要維護乙個棧就行了,遇到'('、''就判斷棧頂元素是不是與之配對的'('、'*lists;
int len;
lists head, tail;
void alloc(lists &p)
void link()
void push(elemtype e)
void pop()
elemtype top()
int main()
link();
tmp = 0;
for (int i = 0; str[i]; i++)
else pop();
}else if (str[i] == '}')
else pop();}}
}if (tmp || len)
printf("wrong\n");
else printf("right\n");
}return 0;
}
(十一)棧的應用 括號匹配檢查
假設表示式中允許包括 等這種是正確的,如果棧為空,第乙個出現的就是右括號,則直接退出。如果是出現的左括號,則直接壓棧。在後續的過程中只要出現右括號,就判斷棧尾括號是否與之匹配,如果匹配就彈出棧,否則就逃過。最後如果棧為空則說明括號完全匹配,如果棧不為空則說明輸入的括號不是成對或者順序出現錯誤。例如 ...
不用棧檢查小括號 中括號 大括號的匹配
設定三個計數器初值設為零,分別記錄小括號 中括號 大括號。開始進行第一次掃瞄,從左向右依次掃瞄每個字元,遇到左括號計數器加一,遇到右括號計數器減一,出現計數器小於零時,報錯退出。掃瞄結束後,若三個計數器有乙個不為零說明括號不匹配,報錯結束檢查。第一步掃瞄結束,如果正確說明三種括號本身匹配正確。現在可...
括號匹配 棧
蒜頭君在紙上寫了乙個串,只包含 和 乙個 能唯一匹配乙個 但是乙個匹配的 必須出現在 之前。請判斷蒜頭君寫的字串能否括號完全匹配,如果能,輸出配對的括號的位置 匹配的括號不可以交叉,只能巢狀 一行輸入乙個字串只含有 和 輸入的字串長度不大於 50000 如果輸入括號不能匹配,輸出一行 no 否則輸出...