2 条题解

  • 1
    @ 2023-1-10 13:52:57

    dfs

    #include<bits/stdc++.h>
    using namespace std;
    #define endl "\n"
    string s;
    int dp[105][105];
    bool check(char a,char b)
    {
    	if(a=='('&&b==')'||a=='['&&b==']')
    		return true;
    	return false;
    }
    int dfs(int l,int r)
    {
    	if(l>r)
    		return 0;		
    	if(dp[l][r])
    		return dp[l][r];		
    	if(l==r)
    		return dp[l][r]=1;
    	dp[l][r]=100;
    	for(int i=l;i<r;i++)
    		dp[l][r]=min(dp[l][r],dfs(l,i)+dfs(i+1,r));
    	if(check(s[l],s[r]))
    		dp[l][r]=min(dp[l][r],dfs(l+1,r-1));	
    	return dp[l][r];
    }
    int main()
    {
    	ios::sync_with_stdio(false);
    	cin.tie(0);
    	cin>>s;
    	s=" "+s;
    	cout<<dfs(1,s.size()-1)<<endl;
    	return 0;
    }
    

    信息

    ID
    802
    时间
    1000ms
    内存
    512MiB
    难度
    5
    标签
    递交数
    57
    已通过
    23
    上传者