sicily 1021. Couples 栈
生活随笔
收集整理的這篇文章主要介紹了
sicily 1021. Couples 栈
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
? ?利用棧可以巧妙的解決該問(wèn)題。
? ?之所以可以用棧可以解決,關(guān)鍵在于想通就算是第1個(gè)和第N個(gè)是配對(duì),一直刪除配對(duì)下去,也是會(huì)在隊(duì)列的中間就有個(gè)配對(duì)的,所以棧的使用并不會(huì)和排隊(duì)排成圈這一特性有沖突。應(yīng)該想通即使出現(xiàn)第1個(gè)和第N個(gè)配對(duì)這樣的特例,也是可以從中間向兩邊散開(kāi)消除,到最后棧還是會(huì)出現(xiàn)空的情況。
? ?一開(kāi)始忘了STL里面有棧,使用數(shù)組去模擬棧(數(shù)組模擬棧的要點(diǎn)在于存儲(chǔ)棧頂所在的索引位置)。如下:
? ?看了習(xí)題講解的PPT后發(fā)現(xiàn)有現(xiàn)成的STL可以用,所以果斷換了STL,也順利通過(guò):
#include <iostream> #include<stack> using namespace std; int main() {int a[200001], b[200000], N, m, w;cin >> N;while ( N != 0) {int i;for ( i = 0; i < N; i++ ) {cin >> m >> w;a[m] = w;a[w] = m;}stack<int> s;for (int i=1;i<=2*N;i++) {if (!s.empty()&&s.top()==a[i])s.pop();elses.push(i);}if(s.empty())cout << "Yes\n";elsecout << "No\n";cin >> N;} }轉(zhuǎn)載于:https://blog.51cto.com/xuewei/1348504
總結(jié)
以上是生活随笔為你收集整理的sicily 1021. Couples 栈的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 10个调试Java的技巧
- 下一篇: bdf是什么格式