括号匹配

来源:互联网 发布:手机淘宝上传店招 编辑:程序博客网 时间:2024/05/16 00:28

问题 A 数据结构作业02 -- 括号的P序列计算

时间限制: 1 Sec  内存限制: 128 MB
[提交]

题目描述

计算一个合法括号字符串的P序列。括号字符串的P序列是由每个右括号与其对应左括号之间的右括号个数排列而成的。 例如,括号字符串“((()(())))”的P序列为:“1 1 2 4 5”。

输入

一组合法的括号字符串,每个括号字符串一行。

输出

每个括号字符串的P序列输出一行,每个数值后有一个空格。

样例输入

(())((()(())))

样例输出

1 2 1 1 2 4 5

提示

连续输入一组字符串时,以输入EOF作为结束,在Windows的终端窗口中,Ctrl+Z表示EOF。 在C语言中,可以用下面的方法读入一组字符串,直到输入结束: char str[256]; while (scanf("%s", str)==1) { ... } 在C++中,可以用下面的方法读入一组字符串,直到输入结束: char str[256]; // 或string str; while (cin>>str) { ... }



#include<stdio.h>#include<string.h>#include<stdlib.h>#include<malloc.h>#include<math.h>char s[15000];int count(int a){    int sum=1;    int ans=0;    while(a--){        if(s[a]=='('){            sum--;            ans++;            if(sum==0)                return ans;        }        else if(s[a]==')'){            sum++;        }    }}int main(){    int i=0;    int len;    int sum;    while(~scanf("%s",s)){        len=strlen(s);        for(i=0;i<len;i++){            if(s[i]==')'){                sum=count(i);                printf("%d ",sum);            }        }        printf("\n");    }    return 0;}




0 0
原创粉丝点击