0
已解决
王子健
初级天翼
初级天翼
1750 方括号的配对 经验值:1200
题目描述 Description
给定一个序列,里面只包含左方括号和右方括号,请按照右方括号出现的次序从左到右的顺序输出每一对配对的方括号出现的位置编号。
(注:括号序列从0开始编号)
输入描述 Input Description
一行:一个只包含左方括号和右方括号的合法方括号序列
输出描述 Output Description
设方括号序列中有 n 个右方括号,则输出 n 行:
每行两个整数 l r,分别表示配对的方括号的左括号出现在第 l 位,右括号出现在第 r 位。
样例输入 Sample Input
[[]][]
样例输出 Sample Output
1 2
0 3
4 5
数据范围及提示 Data Size & Hint
序列总长度不超过100
30分RE代码:
#include <stack>
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
stack<int> s;
string s1;
int main(){
cin >> s1;
for (int i=0; i<s1.size(); i++){
if(s1[i] == '[') s.push(i);
else {
cout << s.top() << ' ' << i << endl;
s.pop();
}
}
return 0;
}
0
已采纳
黄子扬
初级天翼
初级天翼
思路和你一样,也挂了
黄子扬在2020-08-25 09:28:04追加了内容
和你不一样的思路,也挂了,70分,WA #378
#include<bits/stdc++.h>
using namespace std;
struct str
{
char s;
int num;
}a[10005];
int f,cnt,c[10005];
int main()
{
while(cin>>a[++f].s)
{
a[f].num=f;
if(a[f].s==']')
c[++cnt]=f;
}
f--;
for(int i=1;i<=f/2;i++)
{
for(int j=c[i]-1;j>=1;j--)
if(a[j].s=='[')
{
cout<<a[j].num-1<<" "<<c[i]-1<<endl;
a[j].s=' ';
break;
}
}
return 0;
}
直接模拟的
黄子扬在2020-08-25 09:28:32追加了内容
从离右括号最近的左括号开始找的
黄子扬在2020-08-25 11:20:06追加了内容
wa
黄子扬在2020-08-26 09:35:24追加了内容
#include <stack>
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
stack<int> s;
string s1;
int main(){
cin >> s1;
for (int i=0; i<s1.size(); i++){
if(s1[i] == '[') s.push(i);
else if(!s.empty()){
cout << s.top() << ' ' << i << endl;
s.pop();
}
}
return 0;
}
zyf大佬说的没错,判断一下非空就可以ac了
黄子扬在2020-08-26 09:35:28追加了内容
#include <stack>
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
stack<int> s;
string s1;
int main(){
cin >> s1;
for (int i=0; i<s1.size(); i++){
if(s1[i] == '[') s.push(i);
else if(!s.empty()){
cout << s.top() << ' ' << i << endl;
s.pop();
}
}
return 0;
}
zyf大佬说的没错,判断一下非空就可以ac了
0
刘乐宸
新手天翼
新手天翼
if(a[i]=='@') break;
else if(a[i]=='【'){
s.push(a[i]);
}
else if(a[i]=='】'){
if(s.empty()){
cout<<"NO";
return 0;
}
else s.pop();
}
用栈做
0
赵逸凡
初级启示者
初级启示者
肯定RE啊,你pop的次数可能比push多
赵逸凡在2020-08-25 10:40:19追加了内容
@王子健 废话个horse,你知道pop可能比push多不就加个判断搞定吗?感觉你栈没学好
0