问题 A 数据结构作业02 -- 括号的P序列计算
时间限制: 1 Sec 内存限制: 128 MB[ 提交]
题目描述
计算一个合法括号字符串的P序列。括号字符串的P序列是由每个右括号与其对应左括号之间的右括号个数排列而成的。 例如,括号字符串“((()(())))”的P序列为:“1 1 2 4 5”。
输入
一组合法的括号字符串,每个括号字符串一行。
输出
每个括号字符串的P序列输出一行,每个数值后有一个空格。
样例输入
(())((()(())))
样例输出
1 2 1 1 2 4 5
#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;
}