当前位置 : 主页 > 手机开发 > harmonyos >

北大ACM poj1068 Parencodings

来源:互联网 收集:自由互联 发布时间:2023-08-26
题目大意:求一对()中的括号的对数 /*(((()()())))000010101111 4 5 6666 r 当前')'前的'('的总数 1 1 1456 answer 3 4 5210 r2 与当前')'对应的'('的序号 (((()(())))(()()))000010011110010111 4 6666 8 999 r 当前')


题目大意:求一对()中的括号的对数
/*
(((()()())))
000010101111
    4 5 6666         r       当前')'前的'('的总数 
    1 1 1456         answer  
    3 4 5210         r2      与当前')'对应的'('的序号 
(((()(())))(()()))
000010011110010111
    4  6666  8 999   r       当前')'前的'('的总数
    1  1245  1 139   answer 
    3  5421  7 860   r2      与当前')'对应的'('的序号 
*/

#include<stdio.h> 
typedef struct {
	int data[21];
	int top;
}stac;
stac stack;
int main(){
	int t,n,m,i,j;
	int r[21];
	int r2[21];
	//freopen("in.txt","r",stdin);
	scanf("%d",&t);//输入测试组数 
	while(t--){
		stack.top=-1;//初始化栈为空 
		scanf("%d",&n);//输入数据长度 
		for(i=0;i<n;i++){
			scanf("%d",&r[i]); 
			if(i==0){
				for(j=0;j<r[i];j++){//把前r[i]个'('的序号入栈 
					stack.data[++stack.top]=j;//数据入栈 
				}
			}
			else{
				for(j=r[i-1];j<r[i];j++){//把第r[i-1]个~r[i]个'('的序号入栈
					stack.data[++stack.top]=j;//数据入栈 
				}
			} 
			r2[i]=stack.data[stack.top--];//将与')'对应的'('的序号出栈 
		}
		for(i=0;i<n;i++)
			printf("%d ",r[i]-r2[i]);
		printf("\n");
	} 
}



上一篇:北大ACM poj1547 Clay Bully
下一篇:没有了
网友评论