sicily 1021. Couples 栈
生活随笔
收集整理的這篇文章主要介紹了
sicily 1021. Couples 栈
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? ?利用棧可以巧妙的解決該問題。
? ?之所以可以用??梢越鉀Q,關鍵在于想通就算是第1個和第N個是配對,一直刪除配對下去,也是會在隊列的中間就有個配對的,所以棧的使用并不會和排隊排成圈這一特性有沖突。應該想通即使出現第1個和第N個配對這樣的特例,也是可以從中間向兩邊散開消除,到最后棧還是會出現空的情況。
? ?一開始忘了STL里面有棧,使用數組去模擬棧(數組模擬棧的要點在于存儲棧頂所在的索引位置)。如下:
? ?看了習題講解的PPT后發現有現成的STL可以用,所以果斷換了STL,也順利通過:
#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;} }轉載于:https://blog.51cto.com/xuewei/1348504
總結
以上是生活随笔為你收集整理的sicily 1021. Couples 栈的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 10个调试Java的技巧
- 下一篇: bdf是什么格式