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 ;
}

 

 

 

你可能感兴趣的:(encoding)