公司网站宣传设计,北京市住房与建设厅官方网站,如何建设影视网站,shopify可以做企业网站嘛题目
一个串#xff0c;只包含(和)。一个(能唯一匹配一个)#xff0c;但是(必须出现在)之前#xff0c;请判断括号能否完全匹配#xff0c;如果能#xff0c;输出配对的括号位置#xff0c;匹配括号只能嵌套不能交叉。
输入#xff1a;一个只由(和)构成的字符串#…题目
一个串只包含(和)。一个(能唯一匹配一个)但是(必须出现在)之前请判断括号能否完全匹配如果能输出配对的括号位置匹配括号只能嵌套不能交叉。
输入一个只由(和)构成的字符串长度50000。 输出不匹配输出no否则输出yes接下来若干行每行输出2整数空格隔开表示匹配括号位置下标从一开始可以任意顺序输出。
分析与解答
这个就是遇到左括号把下标压入栈遇到右括号栈顶出栈并且做标记ans[i]a.top()意味着有括号的位置在i左括号的位置在k。 如果循环时候遇见右括号但是此时栈为空说明左括号少了如果循环完不为空说明左括号多了。 最后遍历一遍标记数组输出值和下标即可
#includeiostream
#includecstdio
#includestack
#includealgorithm
#includecstring
using namespace std;
char s[50010];
int ans[50010];
int main(){scanf(%s,s);stackint a;int nstrlen(s),f1;for(int i0;in;i){if(s[i](){a.push(i1);}else{if(!a.empty()){ans[i1]a.top();a.pop();}else {f0;break;}}}if(!a.empty()||!f){coutNo;}else{coutYesendl;for(int i0;in;i){if(ans[i]) coutans[i] iendl;}}return 0;
}