2 条题解
-
1
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
- 上传者