POJ C程式設計進階 編程題#4:括弧匹配問題

來源:互聯網
上載者:User

標籤:

編程題#4:擴號匹配問題

來源: POJ (Coursera聲明:在POJ上完成的習題將不會計入Coursera的最後成績。)

注意: 總時間限制: 1000ms 記憶體限制: 65536kB

描述

在某個字串(長度不超過100)中有左括弧、右括弧和大小寫字母;規定(與常見的算數式子一樣)任何一個左括弧都從內到外與在它右邊且距離最近的右括弧匹配。寫一個程式,找到無法匹配的左括弧和右括弧,輸出原來字串,並在下一行標出不能匹配的括弧。不能匹配的左括弧用"$"標註,不能匹配的右括弧用"?"標註.

輸入

輸入包括多組資料,每組資料一行,包含一個字串,只包含左右括弧和大小寫字母,字串長度不超過100

注意:cin.getline(str,100)最多隻能輸入99個字元!

輸出

對每組輸出資料,輸出兩行,第一行包含原始輸入字元,第二行由"$","?"和空格組成,"$"和"?"表示與之對應的左括弧和右括弧不能匹配。

範例輸入

((ABCD(x) )(rttyy())sss)(

範例輸出

((ABCD(x)

$$

)(rttyy())sss)(

?                ?$

 

#include<iostream>#include<stdio.h>#include<stack>#include<string.h>using namespace std;int main() {    int i;    char str[101], Mark[101];    while(scanf("%s", str) != EOF) {        stack<char> S;        for (i = 0; i < strlen(str);i++) {            if (str[i] == ‘(‘) {                S.push(i);                Mark[i] = ‘ ‘;            }            else if (str[i] == ‘)‘) {                if (S.empty()) {                    Mark[i] = ‘?‘;                }                else {                    Mark[i] = ‘ ‘;                    S.pop();                }            }            else {                Mark[i] = ‘ ‘;            }        }        while (!S.empty()) {            Mark[S.top()] = ‘$‘;            S.pop();        }        Mark[i] = ‘\0‘;        puts(str);        puts(Mark);    }    return 0;}

 

POJ C程式設計進階 編程題#4:括弧匹配問題

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.