Parencodings
Time Limit: 1000MS   Memory Limit: 10000K
Total Submissions: 19550   Accepted: 11804

Description

Let S = s1 s2...s2n be a well-formed string of parentheses. S can be encoded in two different ways:
q By an integer sequence P = p1 p2...pn where pi is the number of
left parentheses before the ith right parenthesis in S (P-sequence).

q By an integer sequence W = w1 w2...wn where for each right
parenthesis, say a in S, we associate an integer which is the number of
right parentheses counting from the matched left parenthesis of a up to
a. (W-sequence).

Following is an example of the above encodings:

	S		(((()()())))

P-sequence 4 5 6666

W-sequence 1 1 1456

Write a program to convert P-sequence of a well-formed string to the W-sequence of the same string.

Input

The
first line of the input contains a single integer t (1 <= t <=
10), the number of test cases, followed by the input data for each test
case. The first line of each test case is an integer n (1 <= n <=
20), and the second line is the P-sequence of a well-formed string. It
contains n positive integers, separated with blanks, representing the
P-sequence.

Output

The
output file consists of exactly t lines corresponding to test cases.
For each test case, the output line should contain n integers describing
the W-sequence of the string corresponding to its given P-sequence.

Sample Input

2
6
4 5 6 6 6 6
9
4 6 6 6 6 8 9 9 9

Sample Output

1 1 1 4 5 6
1 1 2 4 5 1 1 3 9 题目分析:
poj的一道英文题目,读了好久啊还借助了别人的翻译指导。此题多组处理数据,每组输入n个数,每个a[i]代表当前对应的右括号前面共有多少个左括号。
比如:n=6, 4 5 6 6 6 6 。 对应第一个右括号前有4个左括号,第二个右括号前有5个左括号,不过千万不要落下第一个右括号啊,以此类推下去。。。。。。
现在要求输出另一个数组,数组元素为当前右括号包含的括号总数!
比如:(()())
第一个右括号只包含自己,故为 1;
第二个右括号也只包含自己, 故为 1;
第三个右括号包含前面两个括号,再加上自己,故为 3.
所以应输出:1 1 3 ; 算法思路:根据n个数的数组模拟出原来的括号字符串,而我用的整形数组代替的,就是用1代表'(',用2代表‘)’,然后对这个整形数组处理。
样例解析:
(((()()()))))
1 1 112 12 12 2 2 2 2
标记数组:0 0 000 00 00 0 0 0 0
第一次处理:0 0 011..............等 标记数组遇到"2"则变成“1”。此时找到2了,则往2的前面去找1,也就是所谓的左括号,然后将找到的左括号标记为1,接下来将
该输出的数存入输出数组,计算公式为:(i-j+1)/2; i为右括号的下标,j为找到的匹配的左括号的下标。 Accepted的代码如下:
#include <stdio.h>
#include <string.h> int a[30];
int b[100], e;
int c[100];
int d[100], dd; int main()
{
int t, n;
int i, j, k; scanf("%d", &t) ;
while(t--)
{
e = 0;
scanf("%d", &n);
scanf("%d", &a[0] ); for(j=0; j<a[0]; j++)
{
b[e++] = 1;
}
b[e++]=2; for(i=1; i<n; i++)
{
scanf("%d", &a[i] );
for(j=0; j<(a[i]-a[i-1]); j++)
{
b[e++] = 1;
}
b[e++] = 2;
}
memset(c,0, sizeof(c));
dd = 0;
for(i=0; i<e; i++ )
{
if( b[i]==2 && c[i]==0 )
{
c[i]=1;
for(j=i-1; j>=0; j--)
{
if( b[j]==1 && c[j]==0 )
{
c[j]=1;
d[dd++] = (i-j+1)/2 ;
break;
}
}
}
}
for(k=0; k<dd; k++)
{
printf("%d%c", d[k],k==dd-1?'\n':' ' );
}
}
return 0;
}

												

POJ 1068 Parencodings (类似括号的处理问题)的更多相关文章

  1. 模拟 POJ 1068 Parencodings

    题目地址:http://poj.org/problem?id=1068 /* 题意:给出每个右括号前的左括号总数(P序列),输出每对括号里的(包括自身)右括号总数(W序列) 模拟题:无算法,s数组把左 ...

  2. POJ 1068 Parencodings【水模拟--数括号】

    链接: http://poj.org/problem?id=1068 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=27454#probl ...

  3. poj 1068 Parencodings(模拟)

    转载请注明出处:viewmode=contents">http://blog.csdn.net/u012860063?viewmode=contents 题目链接:http://poj ...

  4. POJ 1068 Parencodings 模拟 难度:0

    http://poj.org/problem?id=1068 #include<cstdio> #include <cstring> using namespace std; ...

  5. poj 1068 Parencodings(栈)

    题目链接:http://poj.org/problem?id=1068 思路分析:对栈的模拟,将栈中元素视为广义表,如 (((()()()))),可以看做 LS =< a1, a2..., a1 ...

  6. [ACM] POJ 1068 Parencodings(模拟)

    Parencodings Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 19352   Accepted: 11675 De ...

  7. POJ 1068 Parencodings

    Parencodings Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 24932   Accepted: 14695 De ...

  8. poj 1068 Parencodings 模拟题

    Description Let S = s1 s2...s2n be a well-formed string of parentheses. S can be encoded in two diff ...

  9. poj 1068 Parencodings 模拟

    进入每个' )  '多少前' (  ', 我们力求在每' ) '多少前' )  ', 我的方法是最原始的图还原出来,去寻找')'. 用. . #include<stdio.h> #incl ...

随机推荐

  1. python char()和ord()

    通过help 查看相关函数的帮助文档 >>>help (chr) chr(...) chr(i) -> character Return a string of one cha ...

  2. Android版CSDN发现的一些问题

          作为CSDN的忠有用户,在他一推出这款APP以后.就下载了使用,近期发现了一些个问题,在此提出来.希望看到或者遇到同样问题的,提出你们的解决方式.       在CSDN手机版的首页上,我 ...

  3. CSS基础2——选择器

    前面说过样式规则.也知道了样式规则语法形式为:选择器+声明块 如:div{ color:black:padding:10px; }   div即表示选择器(此处是元素选择器),花括号里的内容就是声明块 ...

  4. 查看Android源码和源码布局

    一.查看源码 1.https://github.com/android 2.http://grepcode.com/project/repository.grepcode.com/java/ext/c ...

  5. 机器学习11—Apriori学习笔记

    votesmart下载  https://pypi.python.org/pypi/py-votesmart test11.py #-*- coding:utf-8 import sys sys.pa ...

  6. EJB是什么?(节选)

    近期的项目中使用了EJB.当时就仅仅知道怎么用,没有深入的去理解.当完毕这个项目之后.再回想项目中使用的技术.框架以及工具的时候,突然感觉对EJB这个概念非常是模糊,于是上网搜一些资料.可是,非常多的 ...

  7. win10正式版开始菜单无法打开,右边的网络连接、操作中心也打不开

    问题描述: 开机后电脑键盘的win键无响应,鼠标点击菜单栏中的这几个按键也都无响应,但是点击自己固定的应用程序却没有问题,在网上查找尝试了许多资料,终于找到了一个合适的解决方案.现记录如下 解决方案: ...

  8. 转载 【iOS开发】网页JS与OC交互(JavaScriptCore) OC ----->JS

      目标 本文介绍利用苹果在iOS7时发布的JavaScriptCore.framework框架进行js与OC的交互.我们想要达到的目标是: OC调用网页上的js方法 网页js调用APP中的OC方法 ...

  9. PHP-Manual的学习----【语言参考】----【类型】-----【array数组】

    1.Array 数组  PHP 中的 数组 实际上是一个有序映射.映射是一种把 values 关联到 keys 的类型.此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量),散列表(是 ...

  10. Linux中的提示符

    root的提示符:# 一般用户的提示符:$