[HDU 1870]愚人节的礼物

传送门(problem_link)

这道题目就是很普通的一道水题,容易错的点可能就是题目问你是最少要拆多少礼物。

((()()(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;
}
View Code
原文地址:https://www.cnblogs.com/Vikyanite/p/11365409.html