现在的位置: 首页 > 综合 > 正文

poj1068

2019年11月09日 ⁄ 综合 ⁄ 共 492字 ⁄ 字号 评论关闭
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
	int temp,p,n,t,N;
	bool v[20];//访问了第几个左括号(用0标记第一个左括号,从左往右数) ,访问之后标记为1,事先清零 
	scanf("%d",&t);
	while(t--)
	{
		p=0;
		memset(v,0,sizeof(v));
		scanf("%d",&N);
		while(N--)
		{
			scanf("%d",&n);//读取当前右括号前的左括号数量 
			if(n!=p)//当前右括号与前一个右括号相比,若前面的左括号数量不等,则离它最近的左括号距离为1 
			{
				temp=1;
			}
			else//当前右括号与前一个右括号相比,若前面的左括号数量相等,则向左迭代寻找离它最近的左括号 
			{
				while(v[n-temp])
				temp++;
			}
			printf("%d",temp);
			if(N)//若不为最后一次输出则加空格,否则换行 
			printf(" ");
			else
			printf("\n");
			v[n-temp]=1;//标记已访问的左括号 
			p=n;//更新上一个右括号前面的左括号数量 
		}
	}
}

【上篇】
【下篇】

抱歉!评论已关闭.