一本通 5.1 练习 1」括号配对
题目描述
输入格式
输出格式
样例
数据范围与提示
一道区间dp题,要知道题意。。。
按区间dp套路就好
注意加判断
#include<bits/stdc++.h> using namespace std; char a[110]; int f[110][110],n; int main(){ scanf("%s",a+1); n=strlen(a+1); for(int i=1;i<=n;i++) f[i][i]=1; for(int len=1;len<n;len++) for(int i=1,j=i+len;j<=n;i++,j++){ f[i][j]=0x3f3f3f3f;//注意这句话只能放这,全部赋极大值会错 for(int k=i;k<j;k++) f[i][j]=min(f[i][j],f[i][k]+f[k+1][j]); if((a[i]=='('&&a[j]==')')||(a[i]=='['&&a[j]==']')) f[i][j]=min(f[i][j],f[i+1][j-1]); } printf("%d",f[1][n]); return 0; }