hdu 3351

来源:互联网 发布:手机淘宝查价格走势 编辑:程序博客网 时间:2024/06/06 16:27

题意:给出一个由'{' , '}' 组成的字符串,通过改变最少括号的方向使其匹配。

思路:贪心方法:从左向右遍历,遇到左括号lef++,遇到右括号,若lef>0,lef--,否则右括号变为左括号,ans++,lef++,最后再加上多下来的左括号,即lef/2。


代码如下:

/* * 3351_2.cpp * *  Created on: 2013年8月7日 *      Author: Administrator */#include <iostream>using namespace std;int main(){string str;int lef;int ans;    int count = 1;while( cin >> str,str[0]!= '-'  ){        lef = 0,ans =0;for(int i = 0 ; i < str.length() ; ++i ){if(str[i] == '{'){//如果是左括号lef++;}else if(lef > 0 ){//如果是右括号且左括号的数量>0--lef;}else{//如果是右括号且左括号的数量<=0//是右括号转向成左括号ans++;lef++;}}cout<<count++<<". "<<(ans+lef/2)<<endl;}}


原创粉丝点击