1. 程式人生 > >C++ #include<stack> 用法

C++ #include<stack> 用法

C++ #include 用法

c++ stl棧stack的標頭檔案為:

#include < stack >

stack< int > S;//宣告一個物件

S.empty();//棧空返回true 否則false

int x=S.size();//返回棧中元素個數於x

S.pop();//移除棧頂元素

S.push(x);將x置於棧頂

x=S.top();返回棧頂元素
其中51nod中 1289 大魚吃小魚題目用stack函式直接呼叫棧直接呼叫會比較方便。
而這道題,規定一個方向壓棧,然後與棧頂元素比較,如果大於棧頂元素則ans++,最後N-sum就是剩下的魚。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<stack>
using namespace std;
int main(){
	stack<int> s;
	int n;
    scanf("%d",&n);
    int ans=0;
    for(int i=0;i<n;i++)
    {
        int x,y;
        scanf("%d%d",&x,&y);
        if(y==1) s.push(x);//向右壓棧 
        if(y==0)
        {
            while(!s.empty()&&s.top()<x)
            {
                s.pop();
                ans++;
            }
            if(!s.empty())ans++;
        }
    }
    printf("%d",n-ans);
    return 0;
}