编程题
圆括号编码 ## 来源 Asia 2001, Tehran (Iran) (ZOJ1016, POJ1068) ## 题目描述 令S=s1 s2 … s2n是一个正则(well-formed)的圆括号串。S可以编码成2种不同的形式: (1) 编码成一个整型序列P = p1 p2 … pn,pi代表在S序列中第i个右圆括号前的左圆括号数量。(记为P-序列) (2) 编码成一个整型序列W=w1 w2 … wn,对每一个右圆括号a,编码成一个整数wi,表示从与之匹配的左圆括号开始到a之间的右圆括号的数目(包括a本身)。(记为W-序列) 下面是一个例子: S ( ( ( ( ) ( ) ( ) ) ) ) P-序列 4 5 6 6 6 6 (注:第1个右圆括号前有4个左括号,第2个右圆括号前有5个左括号,…) W-序列 1 1 1 4 5 6 (注:第1个右圆括号是与它旁边的左圆括号匹配的,则这两个圆括号之间有1个右圆括号(就是第1个右圆括号本身),…) 编写程序,把一个正则圆括号串的P-序列转化为W-序列。 ## 输入描述 第一行是一个整数t(1≤t≤10),表示测试数据的个数。每个测试数据的第1行是一个整数n(1≤n≤20),第2行是一个正则圆括号串的P-序列,包含n个正整型,以空格相隔。 ## 输出描述 输出有t行。对输入文件每个测试数据所表示的P-序列,输出一行,包含n个整数,表示对应的W-序列。 ## 样例输入 ```txt 1 5 4 5 5 5 5 ``` ## 样例输出 ```txt 1 1 3 4 5 ```
查看答案
赣ICP备20007335号-2