堆栈
我们所说的堆栈其实就是栈这种数据结构。只能在栈顶来进行添加和删除。
第一步:初始化
|_|
|_|
|_|
|_|
|_|
|_| top=0;
第二步:加入一个元素8
|_|
|_|
|_|
|_|
|8| top=1;
|_|
第三步:删除一个元素
|_|
|_|
|_|
|_|
|8|
|_| top=0;
典型的堆栈的题目是:poj 3250 http://poj.org/problem?id=3250
代码如下:
(不用stl的代码,141ms)
View Code
include "iostream" #include "string" #include "algorithm" using namespace std; #define maxn 80005 int cow[maxn]; int main() { int n, nn; long long ans=0; scanf("%d", &n); int h=0, t=0; while(n--) { scanf("%d", &nn); while(h>t && cow[h]<=nn) h--; ans += h; cow[++h]=nn; } printf("%lld\n", ans); }
(用了stl的代码,1016ms)
View Code
#include "iostream" #include "string" #include "algorithm" #include "stack" using namespace std; int main() { int n, nn; long long ans=0; cin>>n; stack<int> s; while(n--) { cin>>nn; while(!s.empty() && s.top()<=nn) s.pop(); ans += s.size(); s.push(nn); } cout<<ans<<endl; }
posted on 2012-08-14 16:57 More study needed. 阅读(280) 评论(0) 编辑 收藏 举报