Parentheses Balance 平衡的括号 UVA 673 (DFS求解)

落日映苍穹つ 2024-02-17 18:56 97阅读 0赞
  1. #include<cstdio>
  2. #include<cstring>
  3. const int maxn=128+2;
  4. bool flag1=true;
  5. char s[maxn];
  6. int len1;
  7. void dfs(int &i){
  8. if(s[i]==')' || s[i]==']'){
  9. flag1=false;
  10. return ;
  11. }
  12. else if(s[i]=='('){
  13. while(true){
  14. i++;
  15. if(i>=len1){
  16. flag1=false;return ;
  17. }
  18. if(s[i]==')')return;
  19. else dfs(i);
  20. }
  21. }
  22. else if(s[i]=='['){
  23. while(true){
  24. i++;
  25. if(i>=len1){
  26. flag1=false;return ;
  27. }
  28. if(s[i]==']')return ;
  29. else dfs(i);
  30. }
  31. }
  32. }
  33. int main(){
  34. int T;
  35. scanf("%d",&T);
  36. getchar();
  37. while(T--){
  38. flag1=true;
  39. gets(s);
  40. len1=strlen(s);
  41. if(len1) //空串输出Yes
  42. {
  43. for(int i=0;i<len1;i++){
  44. if(flag1)dfs(i);
  45. }
  46. if(flag1)printf("Yes\n");
  47. else printf("No\n");
  48. }
  49. else printf("Yes\n");
  50. }
  51. return 0;
  52. }

发表评论

表情:
评论列表 (有 0 条评论,97人围观)

还没有评论,来说两句吧...

相关阅读