⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2823895_ac_106ms_1084k.cc

📁 做的POJ的一些题目
💻 CC
字号:
#include <iostream>
#include <string>
using namespace std;
string b[101][101],cs;
int a[101][101],i,j,k,len,p;
int main()
{
    while(getline(cin,cs))
    {
        len = cs.length();
        if(len==0)
        {
            cout<<endl;
            continue;
        }    
        for(i=0; i<len; i++)
        {    
            for(j=0; j<=len; j++)
            {
                b[i][j] = "";
            }
            a[i+1][i] = 0;
            a[i][i] = 1;
            if(cs[i]=='['||cs[i]==']')
            {
                b[i][i] = "[]";
            }
            if(cs[i]=='('||cs[i]==')')
            {
                b[i][i] = "()";
            }               
        }    
        for(p=1; p<len; p++)
        {
            for(i=0; i<len-p; i++)
            {
                j = i + p;
                a[i][j] = 1000;
                if(cs[i]=='['&&cs[j]==']' || cs[i]=='('&&cs[j]==')')
                {
                    if(a[i+1][j-1]<a[i][j])
                    {
                        a[i][j] = a[i+1][j-1];
                        int x = b[i][j].length();
                        if(cs[i]=='[')
                        {
                            b[i][j] = '['+b[i+1][j-1]+']';
                        }    
                        else
                        {
                            b[i][j] = '('+b[i+1][j-1]+')';
                        }    
                    }  
                }
                if(cs[i]=='(' || cs[i]=='[')
                {
                    char c = cs[i]=='('?')':']';
                    if(a[i+1][j]+1<a[i][j])
                    {
                        a[i][j] = a[i+1][j]+1;
                        b[i][j] = cs[i]+b[i+1][j]+c; 
                    }
                }    
                if(cs[j]==')' || cs[j]==']')
                {
                    char c1 = (cs[j]==')'?'(':'[');
                    if(a[i][j-1]+1<a[i][j])
                    {
                        a[i][j] = a[i][j-1]+1;
                        b[i][j] = c1+b[i][j-1]+cs[j];
                    }  
                }
                for(k=i; k<j; k++)
                {
                    if(a[i][k]+a[k+1][j]<a[i][j])
                    {
                        a[i][j] = a[i][k]+a[k+1][j];
                        b[i][j] = b[i][k]+b[k+1][j];
                    }                        
                }            
            }    
        }
        cout<<b[0][len-1]<<endl;   
    }
    return 0;
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -