時空限制 1000ms/64mb
字串中只含有括號 (),,<>,{},判斷輸入的字串中括號是否匹配。如果括號有互相包含的形式,從內到外必須是<>,(),,{},例如。輸入: [()] 輸出:yes,而輸入(), ()都應該輸出no。
檔案的第一行為乙個整數n,表示以下有多少個由括好組成的字串。接下來的n行,每行都是乙個由括號組成的長度不超過255的字串。
在輸出檔案中有n行,每行都是yes或no。
5{}{}<><>()()
}}<<>><<>>(())(())
}}<<>><<>>(())(())
<<<>><<>>>((<>))(())[[(<>)]]
><}<<<>><<>>>((<>))(())[[(<>)]]
yes內到外必須是<>,(),,{},我們給它們定個優先順序,用對映來定優先順序。yesyes
yesno
1、當某個符號的左闊符時,若果棧空或棧頂符號優先順序小於等於,可以入棧。
2、否者不能入棧,匹配失敗。
3、如果是右闊符時,棧頂非空且棧頂是此時的左括號 sk.top()+4==a[i] ,匹配成功,出棧。
4、否則匹配失敗。
5、根據匹配標誌,輸出結果。
法一:stl棧
#include#include#includeusing namespace std;
const char f = ',']',')','>'}; //左部分和右部分間隔4
int n,a[300];
int main()
}else
}if (!sk.empty()) cout<<"no\n";
else if (flag) cout<<"yes\n";
else cout<<"no\n";
} return 0;
}
法二:手動棧
#include#includeusing namespace std;
const int n = 300;
const char f = ',']',')','>'}; //左部分和右部分間隔4
int n,a[n],stack[n];
int main()
}else
}if (top) cout<<"no\n";
else if (flag) cout<<"yes\n";
else cout<<"no\n";
} return 0;
}
1355 字串匹配問題 strs
題目描述 字串中只含有括號 判斷輸入的字串中括號是否匹配。如果括號有互相包含的形式,從內到外必須是 例如。輸入 輸出 yes,而輸入 都應該輸出no。輸入 第一行為乙個整數n,表示以下有多少個由括好組成的字串。接下來的n行,每行都是乙個由括號組成的長度不超過255的字串。輸出 在輸出檔案中有n行,每...
1005 字串匹配問題
時間限制 1 sec 記憶體限制 256 mb 提交 315 解決 163 提交 狀態 討論版 給出乙個字串和多行文字,在這些文字中找到字串出現的那些行。你的程式還需支援大小寫敏感選項 當選項開啟時,表示同乙個字母的大寫和小寫看作不同的字元 當選項關閉時,表示同乙個字母的大寫和小寫看作相同的字元。輸...
1005字串匹配問題
題目描述 給出乙個字串和多行文字,在這些文字中找到字串出現的那些行。你的程式還需支援大小寫敏感選項 當選項開啟時,表示同乙個字母的大寫和小寫看作不同的字元 當選項關閉時,表示同乙個字母的大寫和小寫看作相同的字元。輸入輸入的第一行包含乙個字串s,由大小寫英文本母組成。第二行包含乙個數字,表示大小寫敏感...