使用标准库的栈和队列时,先包含相关的头文件
#include<stack>
#include<queue>
定义栈如下:
stack<int> stk;
定义队列如下:
queue<int> q;
栈提供了如下的操作
- s.empty() 如果栈为空返回true,否则返回false
- s.size() 返回栈中元素的个数
- s.pop() 删除栈顶元素但不返回其值
- s.top() 返回栈顶的元素,但不删除该元素
- s.push() 在栈顶压入新元素
s.push(a);//元素a入栈
队列提供了下面的操作
- q.empty() 如果队列为空返回true,否则返回false
- q.size() 返回队列中元素的个数
- q.pop() 删除队列首元素但不返回其值
- q.front() 返回队首元素的值,但不删除该元素
- q.push() 在队尾压入新元素
- q.back() 返回队列尾元素的值,但不删除该元素
1021 couples中核心代码段:
for(i=1;i<=2*n;i++)
{
if(!s.empty()&&couple[s.top()]==couple[i])
s.pop();
else
s.push(i);
}
{
if(!s.empty()&&couple[s.top()]==couple[i])
s.pop();
else
s.push(i);
}
需要注意的是因为涉及到输入的关系 所以循环时从1开始,不是从0开始。
通过
for(i=0;i<n;i++)
{
cin>>a>>b;
couple[a]=couple[b]=i;
}
{
cin>>a>>b;
couple[a]=couple[b]=i;
}
来实现对每组couple进行标识。