poj 1068 Parencodings(模拟)
2013-10-18 14:18
281 查看
题目链接:POJ 1068-Parencodings
题目大意:对与一个全为括号的序列,定义两种表示方法,P-sequence,表示第i个右括号左边有几个左括号。W-sequence表示第i个右括号与它左边的第j个左括号配对,现在给出P-sequence,求W-sequence。
解题思路:简单的模拟,因为总数不会大于20,所以不用考虑的太复杂。
题目大意:对与一个全为括号的序列,定义两种表示方法,P-sequence,表示第i个右括号左边有几个左括号。W-sequence表示第i个右括号与它左边的第j个左括号配对,现在给出P-sequence,求W-sequence。
解题思路:简单的模拟,因为总数不会大于20,所以不用考虑的太复杂。
#include <stdio.h> #include <string.h> const int N = 50; int n, f , w , s ; int search(int x) { for (int i = x - 1, cnt = 1; i >= 0; i--) { if (s[i]) { if (s[i] == 1) { s[i] = 2; return cnt; } cnt++; } } return -1; } void solve() { int rec = 0, p = 0; memset(s, 0, sizeof(s)); for (int i = 0; i < n; i++) { // draw; int cnt = f[i] - rec; rec = f[i]; for (int j = 0; j < cnt; j++) s[p++] = 1; w[i] = search(p++); } } int main () { int cas; scanf("%d", &cas); while (cas--) { // read; scanf("%d", &n); for (int i = 0; i < n; i++) scanf("%d", &f[i]); // solve; solve(); // printf; printf("%d", w[0]); for (int i = 1; i < n; i++) printf(" %d", w[i]); printf("\n"); } }
相关文章推荐
- erlang杂记十二--再说尾递归
- 第八周作业---求函数的值
- 虚基类
- 使用字节码asm将pojo转换成Map,直接构造mongodb bsonobject
- include <stdio.h>
- 第一章 cocos2d简介
- php判断是否是手机登陆
- Django Session处理
- P2P网贷 天标/秒标 【超高风险、超高回报】
- 一个网页抓取的类支持get+post+cookie存储
- flex时间创建和比较总结
- 泛型与非泛型
- nginx配置安装
- 提升代码内外部质量的22条经验
- Android:Service非绑定
- 提升代码内外部质量的22条经验
- 【unity3d】实现物体双击。
- iOS学习:UILabel和sizeWithFont方法,可用于动态调整UILabel大小
- js 使FORM表单的所有元素不可编辑的示例代码
- iOS学习:UILabel和sizeWithFont方法,可用于动态调整UILabel大小