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

P-sequence     4 5 6666,表示第i个右括号的左边有几个左括号。

W-sequence    1 1 1456,表示第i个右括号和以它为起点的序列中的第几个左括号配对。

问题:已知P序列求W序列。

解决:用字符串数组存放括号序列,再通过遍历和多个标号的出W序列。先找到第一个右括号,在遍历它的左边的括号序列,如果为左括号,则原来为1的标号indexz自减,用于计数的sum自加。如果为右括号则index自加。并每次都判断sum的值,如果为0,则W[0]序列的值为temp,并跳出循环。按照上述过程,依次找到以后的右括号,再执行上面的算法。

 import java.util.Scanner;
/*把一个括号序列,从p表示形式转换成另一种表现形式w。*/
public class N1068 {
int times;
int len;
int[] p;
int[] w;
String[] s;
int index;
int temp;
int pos;
public N1068(){
Scanner cin=new Scanner(System.in);
times=cin.nextInt();
for(int i=0;i<times;i++){
len=cin.nextInt();
p=new int[len];
w=new int[len];
s=new String[2*len];
for(int j=0;j<len;j++){
p[j]=cin.nextInt();
}
pos=0;
temp=0;
index=0;
for(int k=0;k<len;k++){
for(;pos<p[k];pos++){
s[index++]="(";
}
s[index++]=")";
}
transform();
for(int m=0;m<len;m++){
System.out.print(w[m]+" ");
}
System.out.println();
}
}
public void transform(){
pos=0;
int k=0;
for(int i=0;i<len;i++){
for(;k<2*len;k++){
if(s[k].equals(")")){
pos=k;
k++;
break;
}
}
index=1;
temp=0;
for(int j=pos-1;;j--){
if(s[j].equals("(")){
index--;
temp++;
}else{
index++;
}
if(index==0){
w[i]=temp;
break;
}
}
}
}
public static void main(String[] args){
new N1068();
}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

Poj_1068 Parencodings的更多相关文章

  1. [POJ1068]Parencodings

    [POJ1068]Parencodings 试题描述 Let S = s1 s2...s2n be a well-formed string of parentheses. S can be enco ...

  2. Parencodings(imitate)

    Parencodings Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 20679   Accepted: 12436 De ...

  3. 模拟 POJ 1068 Parencodings

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

  4. Parencodings 分类: POJ 2015-06-28 22:00 7人阅读 评论(0) 收藏

    Parencodings Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 22757   Accepted: 13337 De ...

  5. hdu 1361 Parencodings 简单模拟

    Parencodings 题意: 由括号序列S可经P规则和W规则变形为P序列和W序列. p规则是:pi是第i个右括号左边的左括号的数: w规则是:wi是第i右括号与它匹配的左括号之间右括号的数(其中包 ...

  6. POJ 1068 Parencodings

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

  7. Poj OpenJudge 1068 Parencodings

    1.Link: http://poj.org/problem?id=1068 http://bailian.openjudge.cn/practice/1068 2.Content: Parencod ...

  8. POJ1068——Parencodings

    Parencodings Description Let S = s1 s2...s2n be a well-formed string of parentheses. S can be encode ...

  9. PO1068 Parencodings 模拟题

    Parencodings Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 28860   Accepted: 16997 De ...

随机推荐

  1. hadoop修改主机名遇到的坑

    正确的修改方式 CentOS修改主机名(hostname) 需要修改两处:一处是/etc/sysconfig/network,另一处是/etc/hosts,只修改任一处会导致系统启动异常.首先切换到r ...

  2. 10个经典Java面试题

    1.Java的HashMap是怎样工作的? HashMap是一个针对数据结构的键值.每一个键都会有对应的值.关键是识别这种值. HashMap 基于 hashing 原理,我们通过 put ()和 g ...

  3. EasyNVR H5无插件摄像机直播解决方案前端解析之:videojs初始化的一些样式处理

    初始化完成对videojs样式的调整 由于不同项目的需要,对于加载出来的videojs播放器样式也有不同的需求:我们需要自主的处理一下加载出来的videojs播放器的样式: 默认加载出来的会包含有暂停 ...

  4. 九度OJ 1032:ZOJ (基础题)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4569 解决:2561 题目描述: 读入一个字符串,字符串中包含ZOJ三个字符,个数不一定相等,按ZOJ的顺序输出,当某个字符用完时,剩下的 ...

  5. 不依赖外部js es 库 实现 点击内容 切换

    <!DOCTYPE html> <html lang="zh-cmn-Hans"> <head> <meta http-equiv=&qu ...

  6. ES5中的类与继承

    最近在重新复习TypeScript,看到类这块的时候自然会和ES5中的类写法进行对比加深印象. 发现ES5的类与继承一些细节还是挺多的,时间久了容易忘记,特此记录下. 首先是ES5的类定义,这没什么好 ...

  7. python cookbook第三版学习笔记四:文本以及字符串令牌解析

    文本处理: 假设你存在一个目录,下面存在各种形式的文件,有txt,csv等等.如果你只想找到其中一种或多种格式的文件并打开该如何办呢.首先肯定是要找到满足条件的文件,然后进行路径合并在一一打开. pa ...

  8. <raspberry pi > 用树莓派来听落网电台

    树莓派放在抽屉里吃灰有半年多了,去年玩了1个月后就没怎么开整了,上个月没工作,刚好有点闲暇,就把树莓派翻出来折腾,刚好碰到落网改版了,想起以前在树莓派论坛看到有网友拿树莓派来听豆瓣电台,代码那时我都下 ...

  9. keras: 在构建LSTM模型时,使用变长序列的方法

    众所周知,LSTM的一大优势就是其能够处理变长序列.而在使用keras搭建模型时,如果直接使用LSTM层作为网络输入的第一层,需要指定输入的大小.如果需要使用变长序列,那么,只需要在LSTM层前加一个 ...

  10. GDB打印内存命令

    用gdb查看内存 格式 x /nfu 参数说明 x是 examine 的缩写 n表示要显示的内存单元的个数 f表示显示方式, 可取如下值 x 按十六进制格式显示变量 d 按十进制格式显示变量 u 按十 ...