括号匹配的方法有很多,最常用的便是用栈的方法解决,通过压栈与入栈进行匹配。当然,本文与栈毫无关系。本蒟蒻仅是通过字面的意思,通过不断读入字符,逐个字符进行判断,若为右括号则flag++,若为左括号则flag--,若为0,则表明这一对括号匹配成功。
完整代码如下:
#include "bits/stdc++.h" using namespace std; int main() { int i=0; int flag=0; char arr; for(;;i++) { arr=getchar(); if(i==0&&arr==')'){ printf("NO") ; break; } if(arr=='(') { flag++; } if(arr==')'){ flag--; } if(flag<0){ printf("NO"); break; } if(arr=='@') { if(flag==0){ printf("YES"); break; } else{ printf("NO"); break; } } } return 0; }
这个题目有一点要注意,就是判断完一个字符串之后,别忘了break,我一开始提交的时候时间超限就是这个原因。
最后,此文章是我发的第一篇洛谷刷题题解(显然,我是从入门开始做的),今后会一周更至少三篇题解来记录刷题过程中遇到的有意思的题目。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)