Parencodings--POJ 1068
1、题目类型:模拟题。
2、解题思路:(1)根据输入数据建立Arr[],0表示'(',1表示')';(2)搜索为Arr[]中为 1 的位置,并找到与之相匹配的 0 ,cnt表示对应的匹配间1的个数。
3、注意事项:flag[i]标示Arr[i]是否已完成匹配;flag[]注意及时清空。
4、实现方法:
#include<iostream>
using namespace std;
int Arr[50],Psq[50];
bool flag[50];
int main()
{
int i,j,k,t,n,loc,left,cnt;
cin>>t;
while(t--)
{
cin>>n;
loc=1,left=1;
memset(flag,0,sizeof(flag));
for(i=1;i<=n;i++)
{
cin>>Psq[i];
while(left<Psq[i])
{
Arr[++loc]=0;
left++;
}
Arr[++loc]=1;
}
for(i=1;i<=2*n;i++)
{
cnt=0;
if(Arr[i])
{
flag[i]=true;
for(j=i-1;i>0;j--)
{
if((flag[j]==false) && (Arr[j]==0))
{
flag[j]=true;
for(k=i;k>j;k--)
cnt+=Arr[k];
break;
}
}
cout<<cnt<<" ";
}
}
cout<<endl;
}
return 1;
}