码迷,mamicode.com
首页 > 其他好文 > 详细

一道简单的数据结构题 栈的使用(括号配对)

时间:2017-07-18 13:21:15      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:push   etc   内存   copy   char   getc   结构   div   输入   

一道简单的数据结构题

发布时间: 2017年6月3日 18:46   最后更新: 2017年6月3日 18:51   时间限制: 1000ms   内存限制: 128M

如果插入“+”和“1”到一个括号序列,我们能得到一个正确的数学表达式,我们就认为这个括号序列是合法的。例如,序列"(())()", "()"和"(()(()))"是合法的,但是")(", "(()"和"(()))("是不合法的。我们这有一种仅由“(”和“)”组成的括号序列,你必须改变一些括号,从而得到一个合法的括号序列,求最少改变多少个括号。

一个只包含"("和")"的字符串,字符串的长度n小于1000000

被改变的括号个数m

 复制
()))()((()
2


#include <stdio.h>
#include <stack>  
using namespace std;  
int main()  
{  
    stack<int> s;
    char c[1000000];  
    int num=0;  
    scanf("%s",c);  
    int i=0;  
    while(c[i]!=\0){  //注意,这里的while比while((n=getchar())!=‘\n‘)及for(i=0;i<strlen(c);i++)效率要高,否则TLE
        if(c[i]==)){
            if(s.size()) s.pop();
            else{
                num++;
                s.push(1);
            }
        }
        else s.push(1);
        i++;  
    }  
    num+=s.size()/2;  
    printf("%d",num);
    return 0;
}

 

一道简单的数据结构题 栈的使用(括号配对)

标签:push   etc   内存   copy   char   getc   结构   div   输入   

原文地址:http://www.cnblogs.com/yzm10/p/7199580.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!