日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

1273: 夫妻 -stack的运用

發布時間:2024/9/3 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 1273: 夫妻 -stack的运用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

zcmu
1273: 夫妻
Time Limit: 1 Sec Memory Limit: 32 MB
[Submit][Status][Web Board]
Description

有n對夫妻圍成一個圈站,他們每個人被連續的編號為1至2n。丈夫和妻子不一定站在一起。現在,對于一對夫妻,如果他們兩人中間沒有隔任何其他人(站在一起),那么,他們將牽手離開。直到所有人都離開或者留下的人不能成功牽手,游戲結束。

現在請問:是否所有的夫妻都能成功牽手走出這個圓圈呢?

Input

輸入包含多組測試數據。每組測試數據中,第一行為一個整數n(1<=n<=100000),表示有n對夫妻。之后的n行中,每行包含兩個整數a和b,表示a與b是一對夫妻,他們初始時站的位置為a和b。

n=0表示程序終止輸入。

Output

如果所有的夫妻都能成功牽手離開,輸出“Yes”,否則,輸出“No”。

Sample Input

4
1 4
2 3
5 6
7 8

2
1 3
2 4

0

Sample Output

Yes
No

HINT

Source

ZSU

ACcode~:

#include <stdio.h> #include <string.h> #include <stack> using namespace std; int a[200005]; int main() {int n,x,y;while(~scanf("%d",&n)&&n){memset(a,0,sizeof(a));for(int i = 1; i <= n; i++){scanf("%d%d",&x,&y);a[x] = a[y] = i;//第i對夫婦兩人編號為i}stack<int>s;s.push(a[1]);//先把第一個人壓入棧for(int i = 2; i <= 2*n; i++){if(!s.empty()&&s.top() == a[i])//下一個人如果和棧頂這個為夫婦,就pop棧頂s.pop();else if(!s.empty()&&s.top()!=a[i]||(s.empty()))//棧頂這個人不與下一個人不為夫婦或棧空了就讓下一個人入棧s.push(a[i]);}if(s.empty())printf("Yes\n");elseprintf("No\n");}return 0; }

/*
總結:
1.使用前加頭文件#include 和using namespace std;
2.定義stack對象:
stacks;//int 型叫s的stack對象;
3.基本操作:
1)s.push(x);//將x壓入棧
2)s.pop();//棧頂元素出棧
3)s.top();//訪問棧頂元素
4)s.empty();//判斷棧是否為空,是返回true
5)s.size();//棧中元素個數
*/

總結

以上是生活随笔為你收集整理的1273: 夫妻 -stack的运用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。