bool adjudge(int *in, int*out, int len_in, int len_out)
{
if (in == NULL || out == NULL || len_in != len_out)
return false;
stack<int> s;
int i = 0;
int j = 0;
while (j < len_out)
{
while (out[j] != in[i])
{
s.push(in[i]);
i++;
if (i >= len_in)
return false;
}
i++;
j++;
if (!s.empty())
{
while (out[j] == s.top())
{
s.pop();
if (s.empty())
{
if (j == len_out - 1)
return true;
break;
}
j++;
}
j++;
}
}
if (j == len_out)
return true;
return false;
}
int main()
{
int arr1[5] = {1,2,3,4,5};
int arr2[5] = { 5,4,3,1,2};
if (adjudge(arr1, arr2, 5, 5))
printf("正确\n");
else
printf("错误\n");
}
{
if (in == NULL || out == NULL || len_in != len_out)
return false;
stack<int> s;
int i = 0;
int j = 0;
while (j < len_out)
{
while (out[j] != in[i])
{
s.push(in[i]);
i++;
if (i >= len_in)
return false;
}
i++;
j++;
if (!s.empty())
{
while (out[j] == s.top())
{
s.pop();
if (s.empty())
{
if (j == len_out - 1)
return true;
break;
}
j++;
}
j++;
}
}
if (j == len_out)
return true;
return false;
}
int main()
{
int arr1[5] = {1,2,3,4,5};
int arr2[5] = { 5,4,3,1,2};
if (adjudge(arr1, arr2, 5, 5))
printf("正确\n");
else
printf("错误\n");
}