Parencodings(POJ 1068)
~题目链接~
http://poj.org/problem?id=1068
输入
2 6 4 5 6 6 6 6 9 4 6 6 6 6 8 9 9 9
结果
1 1 1 4 5 6 1 1 2 4 5 1 1 3 9
匹配括号
1.输入数据为右括号出现时,前段左括号的个数
2.输出此右括号与左括号匹配时,中间包含几个完整的括号
1 #include<stdio.h> 2 #include<string.h> 3 #include<stdlib.h> 4 5 int main() 6 { 7 int T,a[100]; 8 scanf("%d",&T); 9 while(T--) 10 { 11 int n,flag=0; 12 scanf("%d",&n); 13 memset(a,0,sizeof(a)); 14 for(int i=1; i<=n; i++) 15 { 16 scanf("%d",&a[i]); 17 int j=i-1; 18 while(a[i]-a[j]/*前端括号计数*/<i-j)//匹配括号,右括号个数为i,匹配左括号 19 j--; 20 if(!flag) 21 { 22 printf("%d",i-j); 23 flag=1; 24 } 25 else 26 printf(" %d",i-j); 27 } 28 printf("\n"); 29 } 30 31 return 0; 32 }