Seinfeld
HDU - 3351题意:只包含'{','}'的偶数长度的字符串, 每次只能改变一个括号:'{'->'}'或'}'->'{'; 求最少的操作次数, 使字符串是合法的;
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <vector>
#include <stack>
using namespace std;
const int INF = 0x3f3f3f3f;
char s[2100];
int dp[2100][2100];
stack<char> sta;
int main(){
int k=0;
while(scanf("%s", s), s[0]!='-'){
k++;
while(!sta.empty()) sta.pop();
int len=strlen(s);
for(int i=0; i<len; i++){
if(s[i]=='{') sta.push('{');
else{
if(sta.empty()) sta.push('}');
else if(sta.top()=='}') sta.push('}');
else sta.pop();
}
}
int ans=0;
while(!sta.empty()){
char x, y;
x=sta.top();
sta.pop();
y=sta.top();
sta.pop();
if(x==y) ans++;
else ans+=2;
}
printf("%d. %d\n", k, ans);
}
return 0;
}