按照顺序进栈,判断是否可以以给定序列出栈出栈

void solved() 
{
	int n;
	cin >> n;
    //储存出栈次序
	ifor(i, 0, n - 1)
	{
		cin >> a[i];
	}
	int temp = 1;
    //判断栈顶元素是否和即将要出栈的元素是否相等不相等继续向栈里面丢数据,
    //相等则删除栈顶,继续循环,知道栈的元素为空
    /*Determine whether the element at the top of the stack is equal to the element to be popped. 
    Continue to throw data into the stack. 
    If it is equal, delete the top of the stack and continue to loop until the element of the stack is empty.*/
	for (int i = 0; i < n&&temp<=n;)
	{
		das.push(temp++);
		while (!das.empty()&&das.top() == a[i])
		{
			das.pop();
			++i;
		}		
	}
	if (das.empty())
		cout<<"OK";
	else
		cout<<"NO";
	return;
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务