2 条题解
- 
  0
#include <bits/stdc++.h> using namespace std; const int N = 1e3 + 5; int n; int dp[N][N], root[N][N]; int a[N]; string s; bool check(int l, int r) { return ((s[l] == '(' && s[r] == ')') || (s[l] == '[' && s[r] == ']')); } int main() { memset(dp, 0x3f, sizeof(dp)); cin >> s; int len = s.size(); s = " " + s; for(int i = 1; i <= len; i++) dp[i][i] = 1; for(int i = 2; i <= len; i++) { for(int l = 1; l + i - 1 <= len; l++) { int r = i + l - 1; if(l + 1 == r && check(l, r)) dp[l][r] = 0; if(l + 1 < r && check(l, r)) dp[l][r] = dp[l + 1][r - 1]; for(int k = l; k < r; k++) { dp[l][r] = min(dp[l][r], dp[l][k] + dp[k + 1][r]); } } } cout << dp[1][len] << endl; return 0; } 
信息
- ID
 - 469
 - 时间
 - 1000ms
 - 内存
 - 512MiB
 - 难度
 - 6
 - 标签
 - 递交数
 - 38
 - 已通过
 - 14
 - 上传者