1021. Couples
Description
N couples are standing in a circle, numbered consecutively clockwise from 1 to 2N. Husband and wife do not always stand together. We remove the couples who stand together until the circle is empty or we can't remove a couple any more. Can we remove all the couples out of the circle?
Input
There may be several test cases in the input file. In each case, the first line is an integer N(1 <= N <= 100000)----the number of couples. In the following N lines, each line contains two integers ---- the numbers of each couple.
Output
Output "Yes" if we can remove all the couples out of the circle. Otherwise, output "No".
Sample Input
4 1 4 2 3 5 6 7 8 2 1 3 2 4 0
Sample Output
Yes No |
题目描述:
n对夫妻按顺序站成一个圈,每个人都有各自的编号,从1到2n,相邻的夫妻可以去掉,问最后能不能把所有的夫妻都去掉。
eg: 4对夫妻的圈,12345678站好,其中23是夫妻,14是夫妻,23相邻,可去掉,去掉后14也相邻,可去掉,一次类推。
题目分析:用栈来模拟整个过程即可。简单题。
#include<iostream>
#include<stack>
#include<cstring>
using namespace std;
int main()
{
int num;
while(cin>>num)
{
if(num==0) return 0;
stack<int>cp;
stack<int>save;
int note[200002];
memset(note,0,sizeof(note));
int a,b;
for(int i=1;i<=num;i++)
{
cin>>a>>b;
note[a]=b;
note[b]=a;
}
for(int j=1;j<num*2+1;j++)
{
if(!cp.empty()&&e[j]==cp.top()) cp.pop();
else cp.push(j);
}
if(cp.empty()) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
system("pause");
return 0;
}