PIPIOJ-1036: 括号匹配

PIPIOJ-1036: 括号匹配

又是一个很迷的题目,明明很简单,但总是错误33%…😢😢)


1036: 括号匹配


题目描述:
PIPI给你一个合法的括号序列,希望跟你按左括号下标递增顺序给出每对括号在序列中的下标。(下标从1开始)

输入:
多组数据
第一行包括一个只包含’(’,’)'的字符串,保证输入的括号匹配序列合法,长度不超过100000

输出
按左括号下标递增顺序给出每对括号在序列中的下标。

样例输入

(())()()

样例输出

1 4  
2 3  
5 6  
7 8

我的AC代码:

#include<bits/stdc++.h>
using namespace std;
stack<int> st;
typedef pair<int,int> pir;

int main(){
	string str;
	while(getline(cin,str)){
        vector<pir> v;
        while(!st.empty()) st.pop();
		int len = str.length();
		for(int i=0;i<len;i++){
			if(str[i] == '('){
				st.push(i+1);
			}else if(!st.empty()&&str[i] == ')'){
            ///这里题目应该有问题 这里不判断为右括号错误33%
				int x;
				x = st.top();
				v.push_back({x,i+1});
				st.pop();
			}
		}
		sort(v.begin(),v.end()); ///按first元素递增排序
		for(int i=0;i<v.size();i++){
			printf("%d %d\n",v[i].first,v[i].second);
		}
	}
	return 0;
}

因为题目中说了只要左括号和右括号,所以我一开始if那判断就没有判断右括号了,因为不是左括号就肯定是有括号了吧。。。但是就是错误33%,结果找了很久,最后加了这一句就过了。。。。。我是没想明白的,总觉得题目有问题。。。有木有老铁知道呀~


分割线分割一下,今天做了一道简单的字符串匹配题,我的个神又错33%感觉和这个很像,明明感觉没啥错误却老是AC不过,结果将getline改成cin 就就就AC!!!!!!
所以大噶能用cin>>s就别用getline(cin,s)吧 。。。。。然后我将上面那个代码没有加那条判断右括号的语句再将读入改为了cin>>str就通过了…


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值