poj 1068 Parencodings(模拟)
转载请注明出处: viewmode=contents">http://blog.csdn.net/u012860063?viewmode=contents
id=1068
Description
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
string. It contains n positive integers, separated with blanks, representing the P-sequence.
Output
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
题意:
一组括号 (((( ) ( ) ( ) ) ) )
有两种描写叙述方法:
P方法:4 5 6 6 6 6 - 每个‘)’前,有几个‘(’
W方法:1 1 1 4 5 6 - 每个‘)‘的前面第几个(注意是从当前位置往前面数)’(‘是跟它匹配的
要求是依据P求W
思路:
先依据P还原出括号的位置,在计算出W就可以。
代码例如以下:
#include <iostream>
using namespace std;
#include <cstring>
#define N 117
char s[10000];
int n;
int i, j, k, l;
int p[N],w[N], flag[N];
void WW()
{
int x = 1;
int count = 0;
for(i = 1; i < l; i++)
{
if(s[i] == ')')
{
for(j = i-1; j >= 1; j--)
{
if(s[j] == '(')
count++;
if(flag[j] == 0 && s[j] == '(')
{
flag[j] = 1;
w[x++] = count;
break;
}
}
count = 0;
}
}
}
int main()
{
int t;
while(cin >> t)
{
while(t--)
{
memset(flag,0,sizeof(flag));
cin >> n;
k = 0, l = 1;
for(i = 1; i <= n; i++)
{
cin >> p[i];
for(j = 1; j <= p[i] - k; j++)
{
s[l++] = '(';
}
s[l++] = ')';
k = p[i];
}
// cout<<s<<endl;
WW();
for(i = 1; i < n; i++)
{
cout<<w[i]<<' ';
}
cout<<w[n]<<endl;
}
}
return 0;
}
poj 1068 Parencodings(模拟)的更多相关文章
- POJ 1068 Parencodings 模拟 难度:0
http://poj.org/problem?id=1068 #include<cstdio> #include <cstring> using namespace std; ...
- [ACM] POJ 1068 Parencodings(模拟)
Parencodings Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 19352 Accepted: 11675 De ...
- poj 1068 Parencodings 模拟
进入每个' ) '多少前' ( ', 我们力求在每' ) '多少前' ) ', 我的方法是最原始的图还原出来,去寻找')'. 用. . #include<stdio.h> #incl ...
- poj 1068 Parencodings 模拟题
Description Let S = s1 s2...s2n be a well-formed string of parentheses. S can be encoded in two diff ...
- 模拟 POJ 1068 Parencodings
题目地址:http://poj.org/problem?id=1068 /* 题意:给出每个右括号前的左括号总数(P序列),输出每对括号里的(包括自身)右括号总数(W序列) 模拟题:无算法,s数组把左 ...
- POJ 1068 Parencodings【水模拟--数括号】
链接: http://poj.org/problem?id=1068 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=27454#probl ...
- poj 1068 Parencodings(栈)
题目链接:http://poj.org/problem?id=1068 思路分析:对栈的模拟,将栈中元素视为广义表,如 (((()()()))),可以看做 LS =< a1, a2..., a1 ...
- POJ 1068 Parencodings (类似括号的处理问题)
Pare ...
- POJ 1068 Parencodings
Parencodings Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 24932 Accepted: 14695 De ...
随机推荐
- [LeetCode]152. Maximum Product Subarray
This a task that asks u to compute the maximum product from a continue subarray. However, you need t ...
- python基础篇(一)-------- 字符串的操作
1.字符串的常用操作: 已知字符串:str = "hello world zhangsan and zhangsan" 1.字符串的长度:len(str) 2.查看字符串的索引值: ...
- 常用的Axure操作方法(1)
1. 保存原型图片到本地,如在网页上看到图标素材,好多个在一张图上. 如上图所示,将图片拖入axure中,利用分割或者裁剪,把小图标 ...
- SAS学习笔记之《SAS编程与数据挖掘商业案例》(1)系统简介和编程基础
SAS学习笔记之<SAS编程与数据挖掘商业案例>(1)系统简介和编程基础 1. SAS系统简介 1.1 SAS是先编译后执行的语言,data步标志着编译的开始. 数据指针:当前内存缓存区, ...
- c++中std::set自定义去重和排序函数
c++中的std::set,是基于红黑树的平衡二叉树的数据结构实现的一种容器,因为其中所包含的元素的值是唯一的,因此主要用于去重和排序.这篇文章的目的在于探讨和分享如何正确使用std::set实现去重 ...
- 【技术累积】【点】【java】【27】@JSONField
@JSONField 该注解隶属于阿里fastjson,方便fastjson处理对象时的一些操作 源码 @Retention(RetentionPolicy.RUNTIME) @Target({ El ...
- PHP操作Redis相关函数
String数据类型 $redis->set('key','TK'); $redis->set('number','1'); //设置值 $redis->setex('key',5, ...
- Vue项目优化首屏加载速度
Vue项目部署上线后经常会发现首屏加载的速度特别慢:那么有那写能做的简单优化呢 一.路由的懒加载 路由懒加载也就是 把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件. 结合 ...
- POJ-2135-Farm Tour(最大费用最小流)模板
Farm Tour POJ - 2135 When FJ's friends visit him on the farm, he likes to show them around. His farm ...
- 7 numpy 傅里叶,提取图片轮廓
任务:提取照片中轮廓 本次处理图片:我的女神之一 江一燕 导入模块: #jyy.show() 会打开本地图片浏览器 使用傅里叶反转 获取实部,舍弃虚部 去除小数部分 将一维数 ...