关闭

hdoj 1361 Parencodings 2001 Asia Regional Teheran

404人阅读 评论(0) 收藏 举报
分类:

思路:模拟,根据序列P可以构造出S,然后再根据S,推出序列W。

#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstring>

using namespace std;

char str[50];
int w[25];

int main()
{
	int t, n, num;
	scanf("%d", &t);
	while (t--) {
		scanf("%d", &n);
		int i ,j = 0, cnt = 0;
		for (i = 0; i < n; ++i) {
			scanf("%d", &num);
			for (; j < num; ++j)
				str[cnt++] = '(';
			str[cnt++] = ')';
		}
		n *= 2;
		int lf, rt;
		cnt = 0;
		for(i = 0; i < n; ++i) {
			if (str[i] == '(')
				continue;
			lf = 0;
			rt = 1;
			j = i - 1;
			while (1) {
				if (str[j] == ')')
					rt++;
				else
					lf++;
				if(rt == lf) {
				    w[cnt++] = rt;
					break;
				}
				j--;
			}
		}
		for (i = 0; i < cnt-1; ++i)
			printf("%d ", w[i]);
		printf("%d\n", w[cnt-1]);
	}
    return 0;
}


1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:102370次
    • 积分:1860
    • 等级:
    • 排名:千里之外
    • 原创:83篇
    • 转载:6篇
    • 译文:0篇
    • 评论:13条