usaco Typo

  题意:要你改变序列中的一个位置使得该括号序列达到平衡的状态,平衡就是你用一个栈去搞那个序列,匹配完毕之后该栈会是空的。ps:我当大家都知道如何用栈去做括号匹配。

  我发现标程有问题,也不知道自己是不是没有看清楚题目,不过我想,在标程里面加一个东西就可以达到目的,就是你在输入的时候判断下左右括号的个数差与2的关系大小,,如果大于2,那么结果必然是0,反之就按照标程里面那么去做。说实话我到现在都不清楚为什么最终最后括号的个数就可以是答案。。

  1.depth==-1,结果就是右括号的个数?当前的depth=-1,说明上一个位置的时候depth=0,那么到前一个位置的时候,之前的那段括号序列是平衡的,因为这个右括号的出现才使得该序列不平衡了,所以,我们可以采取两种措施来达到平衡,第一,我们可以从当前位置之前的位置中把一个右括号变成左括号来与当前位置的右括号匹配,我们暂且先不管之后的部分会出现一些什么东西;第二,我们可以把当前位置的右括号变成左括号,使之与后面部分中出现的右括号去匹配。但是,真的,可以不用管后面序列中出现的东西吗,我很是怀疑啊,该序列长度是奇数也符合?我想,如果标程中能加我说的那个个数==2这个东西的话,那么后续部分是对结果没有影响的吧。

  2.直到处理完序列,那么如果左括号个数大于0,那么结果便是左括号个数,这个很好理解,因为他里面有个处理就是当depth<=1的时候他把左括号个数置0,所以,实际的左括号个数应该是要多1的。

  善待每一天,努力做好自己。

  欢迎转载,注明出处。

转载于:https://www.cnblogs.com/RainingDays/archive/2013/05/13/3076150.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值