2 solutions

  • 0
    @ 2025-3-15 9:38:33

    bug

    #include <bits/stdc++.h>
    using namespace std;
    const int N=110;
    int f[N][N];
    bool check(char l,char r)
    {
    	if(l=='('&&r==')') return true;
    	if(l=='['&&r==']') return true;
    	return false;
    }
    int main()
    {
    	string s;
    	cin>>s;
    	int n=s.size();
    	for(int i=0;i<n;i++)
    	{
    		f[i][i]=1;
    	}
    	for(int len=2;len<=n;len++)
    	{
    		for(int l=0;l+len-1<n;l++)
    		{
    			int r=l+len-1;
    			f[l][r]=len;
    			if(check(s[l],s[r])) f[l][r]=f[l+1][r-1];
    			f[l][r]=min(f[l][r],min(f[l][r],f[l+1][r])+1);
    			for(int k=l;k<r;k++)
    			{
    				f[l][r]=min(f[l][r],f[l][k]+f[k+1][r]);
    			}
    		}
    	}
    	cout<<f[0][n-1]<<endl;
    	return 0;
    }
    

    Information

    ID
    1442
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    7
    Tags
    (None)
    # Submissions
    17
    Accepted
    4
    Uploaded By