洛谷:P1241 括号序列(stl,普及+/提高 )

   日期:2020-08-23     浏览:136    评论:0    
核心提示:题目:分析:cnt1-4:记录个数。第一遍遍历,记录【和(的个数。cnt2:统计需要(的个数,即统计)的个数。题意不清楚啊,不知道他什么意思?我的方法会选在最右边的哪个,放弃中间的哪个。懒得纠结题意在说什么了。总是,括号问题,我记得自己的做法总是,不单单使用stack,而要使用计数器,或者指针。代码:#includeusing namespace std;int main(){ string s; cin>>s; in

题目:

分析:

cnt1-4:记录个数。

第一遍遍历,记录【和(的个数。

cnt2:统计需要(的个数,即统计)的个数。

题意不清楚啊,不知道他什么意思?

我的方法会选在最右边的哪个,放弃中间的哪个。

懒得纠结题意在说什么了。

总是,括号问题,我记得自己的做法总是,不单单使用stack,而要使用计数器,或者指针。

代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
 string s;
 cin>>s;
 int cnt1=0,cnt2=0,cnt3=0,cnt4=0;
 stack<char> st;
 //1:[ 个数 2:] 3:( 4: )
 for(int i=s.length()-1;i>=0;i--)
 {
  if(s[i]=='[') cnt1++;
  if(s[i]=='(') cnt3++;
 }
 for(int i=s.length()-1;i>=0;i--)
 {
  if(s[i]=='[') 
  {
   if(cnt2==0) { st.push(']');st.push('[');  }
   else { cnt2--; st.push('['); }
  }
  if(s[i]=='(') 
  {
   if(cnt4==0) { st.push(')');st.push('(');  }
   else { cnt4--; st.push('('); }
  }
  if(s[i]==']')
  {
   if(cnt1==0) { continue;  }
   else { cnt1--;cnt2++; st.push(']'); }
  }
  if(s[i]==')')
  {
   if(cnt3==0) { continue;  }
   else { cnt3--;cnt4++; st.push(')'); }
  }
 } 
 while(!st.empty())
 {
  cout<<st.top();
  st.pop();
 }
}
 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服