第六个点过不去求助
查看原帖
第六个点过不去求助
320697
AMIRIOX無暝楼主2021/9/24 22:54

一年半过去了这个人怎么还在问普及-啊( 实在调不出来了 明早还要起早上课 九点半才到家 呜呜呜

#include <cstdio>
#include <iostream>
#include <stack>
using namespace std;
int dpl[10020];
stack<char> s;
bool noans = true;
int maxans = -0x7fffffff;
int maxnu = 0;
bool match(char a, char b) {
    if (a == '(' && b == ')')
        return true;
    return false;
}
signed main() {
    string str;
    cin >> str;
    bool flag = false;
    s.push(str[0]);
    if (str[0] == '(')
        flag = true;
    for (int i = 1; i < str.length(); i++) {
        if (!s.empty() && match(s.top(), str[i])) {
            if (flag) {
                dpl[i] = dpl[i - 1] + 2;
                noans=false;
                if (dpl[i] > maxans) {
                    maxans = dpl[i];
                    maxnu = 0;
                }
                if (dpl[i] == maxans)
                    maxnu++;
            } else {
                dpl[i] = 2;
                flag = true;
                noans=false;
                if (dpl[i] > maxans) {
                    maxans = dpl[i];
                    maxnu = 0;
                }
                if (dpl[i] == maxans)
                    maxnu++;
            }
            s.pop();
        } else {
            if (str[i] == '(') {
                dpl[i] = dpl[i - 1];
                s.push('(');
            } else {
                dpl[i] = dpl[i - 1];
                flag = false;
            }
        }
    }
    if(!noans) printf("%d %d\n", maxans, maxnu);
    else printf("0 1\n");
    return 0;
}




2021/9/24 22:54
加载中...