• nyistoj 15 括号匹配(二)


    括号匹配(二)

    时间限制:1000 ms  |  内存限制:65535 KB
    难度:6
    描述
    给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些括号匹配起来。
    如:
    []是匹配的
    ([])[]是匹配的
    ((]是不匹配的
    ([)]是不匹配的
    输入
    第一行输入一个正整数N,表示测试数据组数(N<=10)
    每组测试数据都只有一行,是一个字符串S,S中只包含以上所说的四种字符,S的长度不超过100
    输出
    对于每组测试数据都输出一个正整数,表示最少需要添加的括号的数量。每组测试输出占一行
    样例输入
    4
    []
    ([])[]
    ((]
    ([)]
    样例输出
    0
    0
    3
    2

      1 #include <stdio.h>
      2 #include <string.h>
      3 
      4 bool judge(char ch[],char x)
      5 {
      6     if(x == ']')
      7       x = '[';
      8     else
      9     x = '(';
     10   //  printf("ch1 = %s\n",ch);
     11     int i = 0;
     12     int flag = 1;
     13     for(i = strlen(ch)-1; i >= 0; i--)
     14         if(ch[i] == x) {
     15             flag = 0;
     16             return true;
     17             break;
     18             }
     19         if(flag) return false;
     20 
     21 }
     22 
     23 int main()
     24 {
     25     int T;
     26     scanf("%d",&T);
     27     while(T--)
     28     {
     29         char ch[105];
     30         scanf("%s",ch);
     31         int i = 0;
     32         int k = 0;
     33         char ch1[105];
     34         ch1[0] = '\0';
     35         int t = 0;
     36         int sum = 0;
     37 
     38         for(i = 0; i < strlen(ch); i++)
     39         {
     40             if(ch[i] == '(' || ch[i] == '[')
     41                ch1[t++] = ch[i];
     42             else
     43             {
     44                 ch1[t] = '\0';
     45                 if(ch[i] == ']')
     46                 {
     47                     if(ch1[t-1] == '[')
     48                         {
     49                             t--;
     50                             ch1[t] = '\0';
     51                         }
     52                     else
     53                         {
     54                           if(judge(ch1,ch[i]) == 1)
     55                             while(1)
     56                             {
     57                                 t--;
     58                                 if(ch1[t] == '[')
     59                                    break;
     60                                 sum++;
     61                             }
     62                             else
     63                             sum++;
     64                         ch1[t] = '\0';
     65                         }
     66                     if(t < 0)
     67                         t = 0;
     68                 }
     69                 if(ch[i] == ')')
     70                 {
     71                     if(ch1[t-1] == '(')
     72                        {
     73                            t--;
     74                            ch1[t] = '\0';
     75                        }
     76                     else
     77                     {
     78                         if(judge(ch1,ch[i]) == 1)
     79                             while(1)
     80                             {
     81                                 t--;
     82                                // printf("c1 = %c\n",ch1[t]);
     83                                 if(ch1[t] == '(')
     84                                    break;
     85                                 sum++;
     86                             }
     87                             else
     88                                 sum++;
     89                         ch1[t] = '\0';
     90                     }
     91                     if(t< 0) t = 0;
     92                 }
     93             }
     94         }
     95         ch1[t] = '\0';
     96         //printf("%s  %d\n",ch1,t);
     97         printf("%d\n",sum+t);
     98     }
     99     return 0;
    100 }
  • 相关阅读:
    Web开发四大作用域(转)
    jsp与servlet(转)
    使用jsp,tomcat实现用户登录注册留言的代码
    java环境变量的配置
    JSP 九大内置对象(转)
    http协议头文件的控制信息(转)
    javaScript实现图片滚动及一个普通图片轮播的代码
    javaScript显示实时时间输出
    javaScript判断输入框是否为空
    1072 威佐夫游戏
  • 原文地址:https://www.cnblogs.com/yyroom/p/3010441.html
Copyright © 2020-2023  润新知