#include<iostream>
#include<string.h>
using namespace std;
const int N = 111;
int f[N][N];
char s[N];
bool is_match(char s,char l){
if(s=='[' && l==']') return true;
if(s=='(' && l==')') return true;
return false;
}
int main(){
scanf("%s",s);
int n = strlen(s);
for(int i=0;i<n;i++) f[i][i] = 1;
for(int len = 2;len<=n;len++){
for(int i=0;i+len-1<n;i++){
int j = i+len-1;
f[i][j] = 1e9;
if(is_match(s[i],s[j])) f[i][j] = f[i+1][j-1];
if(j>=1) f[i][j] = min(f[i][j],max(f[i+1][j],f[i][j-1])+1);
for(int k=i;k<j;k++) f[i][j] = min(f[i][j],f[i][k]+f[k+1][j]);
}
}
printf("%d",f[0][n-1]);
}
括号配对(c++实现)
最新推荐文章于 2024-07-20 17:52:06 发布
这篇文章介绍了使用C++编写的算法,计算两个字符串之间的Levenshtein距离,通过动态规划方法求解字符级别的编辑距离问题。
摘要由CSDN通过智能技术生成