[HDU - 1870]愚人节的礼物
这道题目就是很普通的一道水题,容易错的点可能就是题目问你是最少要拆多少礼物。
((()()(B)))这样的话最少应该是3个才对
当拆到()()(B)的时候直接拆有B的就行了,因为题目求的是最少
所以这道题的解题思路就是一直读,遇到"( "入栈,遇到" )"出栈,遇到B的时候直接跳出然后将栈内元素个数输出即可。
#include <bits/stdc++.h> #define maxn 1000+5 using namespace std; int main() { stack<int> st; char s[maxn]; while(~scanf("%s", s)) { while(!st.empty()) st.pop(); int len = strlen(s); for(int i = 0; i < len; i++) { if (s[i] == '(') st.push(i); else if (s[i] == ')') st.pop(); else printf("%d\n", st.size()); } } return 0; }