weixin_43767248
Infinite Fight
采纳率100%
2018-11-22 03:53

C语言写一算法,对输入的表达式中括号匹配情况检查。匹配的括号需要成对出现,且不嵌套。

已采纳

任务描述
写一算法,对输入的表达式中括号匹配情况检查。匹配的括号需要成对出现,且不嵌套。

输入
第1行为一个整数t(1≤t≤10),表示接下来有t 个测试数据。 第2行输入被检查的表达式。

输出
括号是否匹配。

输入举例
4
([{}()])
([({}))
[(})({})
([{})]
输出举例
Match!
Not match!
Not match!
Not match!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • caozhy 从今以后生命中的每一秒都属于我爱的人 3年前
    // Q714224.cpp : Defines the entry point for the console application.
    //
    
    #include "stdafx.h"
    
    #include "stdio.h"
    #include "stdlib.h"
    #include "string.h"
    
    int main()
    {
        int n;
        char input[200];
        char stack[200];
        scanf("%d", &n);
        int *result = (int *)malloc(sizeof(int) * n);
        for (int i = 0 ; i < n; i++)
        {
            scanf("%s", input);
            int pos = 0;
            for (int j = 0; j < strlen(input) && pos >= 0; j++)
            {
                if (input[j] == '(' || input[j] == '[' || input[j] == '{')
                {
                    stack[pos++] = input[j];
                }
                else if ((input[j] == ')' || input[j] == ']' || input[j] == '}') && pos > 0)
                {
                    if ((stack[pos - 1] == '(' && input[j] == ')') || 
                        (stack[pos - 1] == '[' && input[j] == ']') ||
                        (stack[pos - 1] == '{' && input[j] == '}'))
                        pos--;
                    else
                    {
                        pos = -1;
                        break;
                    }
                }
                else
                {
                    pos = -1;
                    break;
                }
            }
            result[i] = (pos == 0);
        }
        for (int i = 0; i < n; i++)
        {
            if (result[i]) printf("Match!\n"); else printf("Not match!\n");
        }
        return 0;
    }
    
    
    

    图片说明

    如果问题得到解决,请点我回答左上角的采纳和向上的箭头,谢谢

    点赞 1 评论 复制链接分享

相关推荐