首页 > 其他 > 详细

ZOJ 1016 Parencodings

时间:2014-02-27 04:40:51      阅读:483      评论:0      收藏:0      [点我收藏+]

原题链接

题目大意:有两串数字P和W。数组P中,数字P[i]表示第i个右括号之前的左括号个数。数组W中,数字W[i]表示在第i个右括号和与它匹配的左括号之间的右括号的个数(包括本身)。给出一个数组P,求对应的数组W。

解法:开辟一个和括号对数相同大小的数组flag[],初始化0。从P数组读入一个数字a,若flag[a]不等于0,说明对应的左括号已经被用了,继续往前查找,直到找到第一个0.两个元素的下标之差+1就是他们间隔的右括号个数。

 

参考代码:

#include<iostream>
#include<cstring>

using namespace std;

int main(){
	int i,j,m,n,a,b;
	cin>>m;
	for(i=0;i<m;i++){
		cin>>n;
		int flag[20]={0};
		cin>>a;
		flag[a-1]=1;
		cout<<‘1‘;
		for(j=1;j<n;j++){
			cin>>a;
			b=a;
			while(flag[a-1])
				a--;

			flag[a-1]=1;
			b=b-a+1;
			cout<<‘ ‘<<b;
		}
		cout<<endl;
	}



	return 0;
}

ZOJ 1016 Parencodings,布布扣,bubuko.com

ZOJ 1016 Parencodings

原文:http://www.cnblogs.com/naive/p/3568718.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!