70求助,寻找了很久hack数据都没能找出来问题在哪儿
查看原帖
70求助,寻找了很久hack数据都没能找出来问题在哪儿
479111
JiangZhibin楼主2023/12/1 21:29
#include<iostream>
using namespace std;
#define maxx 1000003
char a[maxx];
char b[maxx];
short int jd[maxx]{ 0 };
int n = 0;
int p = 0;
char inverse(char x)
{
    if (x == '[') return ']';
    if (x == '(') return ')';
    else return '*';
}
int main()
{

    while (cin >> a[++n])
    {

        b[++p] = a[n];

        if (inverse(b[p - 1]) == b[p] && inverse(b[p - 1]) != '*')
        {
           
            jd[n] = 1;
            p -= 2;

        }
    }
    n--;
    int counter = 0;
    for (int i = n; i >= 1; i--)
    {
        if (jd[i] == 1) counter++;
        else
        {
            if (counter >= 1)
            {
                counter--;
                jd[i] = 1;
            }
        }
    }
    for (int i = 1; i <= n; i++)
    {
        if (i == n && jd[i]!=0)
        {
            jd[i] += counter;
            break;
        }
        if (jd[i] == 1)
        {
            counter++;
            jd[i] = 0;
        }
        else
        {
            jd[i - 1] = counter;
            counter = 0;
        }
    }
    int max = 0, poz = -1;
    for (int i = 1; i <= n; i++)
        if (jd[i] > max)
        {
            max = jd[i];
            poz = i;
        }
    for (int i = poz - max + 1; i <= poz; i++)
        cout << a[i];
}
2023/12/1 21:29
加载中...