9 solutions
-
3
一开始提交只过了两个样例然后发现stack在下一次循环中时没有初始化导致错误 每次都重新定义stack即可
#include<bits/stdc++.h> using namespace std; int main() { std::ios::sync_with_stdio(false); int n; cin>>n; while(n--){ stack<int> pp; int l; cin>>l; for(int c=0;c<l;c++){ string a; cin>>a; string::iterator it=a.begin(); if(*(++it)=='o'){ if(pp.empty()){ cout<<"Empty"<<endl; }else{ cout<<pp.top()<<endl; pp.pop(); } }else if(*(it)=='u'){ int a; cin>>a; pp.push(a); } } } return 0; }
附带string的遍历方法 下标法:
for( int i = 0; i < a.size() ; i++ ) { cout<<a[i]; } cout<<endl;
迭代器:
string::iterator iter = a.begin(); for( ; iter < a.end() ; iter++) { cout<<*iter; } cout<<endl;
-
2
利用字符串比对来确定需要进行的操作,stack没有clear清空,所以直接在循环的时候重新创建栈,达到重置的效果
#include <bits/stdc++.h> using namespace std; string a="pop",b="push"; int main(){ int t,n,temp; cin>>t; while(t--) { cin>>n; stack <int> s; while(n--) { string c; cin>>c; if(c==a) { if(s.empty()) cout<<"Empty"<<endl; else { cout<<s.top()<<endl; s.pop(); } } else if(c==b) { cin>>temp; s.push(temp); } } } return 0; }
-
1
#include<bits/stdc++.h> using namespace std; stack <int> s; int main(){ int t; cin>>t; for(int j=0;j<t;j++){ int n; cin>>n; string zl; int x; for(int i=0;i<n;i++){ cin>>zl;//这里不能和x一起输入需要判断后分开输入 if(zl=="pop"){ if(!s.empty()){ cout<<s.top()<<endl; s.pop(); } else{ cout<<"Empty"<<endl; } } else if(zl=="push"){ cin>>x; s.push(x); } } while(!s.empty()){//清空栈 s.pop(); } } return 0; }
-
0
这是一道普通的栈,但是是t组输入,记得要把上一个栈清空
#include<bits/stdc++.h> typedef long long ll; using namespace std; string s;//依旧用string,方便; int a[100010]; int main() { int t; cin>>t; stack <int> q; while(t--) { int n; cin>>n; for(int i=0;i<n;i++) { cin>>s; if(s=="pop") { if(q.empty()) cout<<"Empty"<<endl; else { cout<<q.top()<<endl; q.pop(); } } if(s=="push") { int x; cin>>x; q.push(x); } } while(!q.empty())//栈的清空,也可以用clear; { q.pop(); } } return 0; }
-
0
#include <iostream> #include <cstring> #include <stack> using namespace std; int main() { int t,n,b; cin>>t; while(t--) { cin>>n; stack<int>a; while(n--) { char s[20]; cin>>s; if(!strcmp(s,"pop"))//将字符串匹配,符合就进行下列操作 { if(a.empty()) cout<<"Empty"<<endl;//先判断它是否为空,空就按题目要求输出 else { cout<<a.top()<<endl;//否则就输出出栈元素 a.pop();//同时删除 } } else if(!strcmp(s,"push"))//匹配就直接入栈 { cin>>b; a.push(b); } } } return 0; }
-
0
我是蒟蒻1111
#include<bits/stdc++.h> using namespace std; int main() { int n; string wuhu; cin>>n; while(n--) { stack<int> s; int m,n; cin>>m; for(int i=1;i<=m;i++) { cin>>wuhu; if(wuhu=="pop") { if(s.empty()) cout<<"Empty"<<endl; else{ cout<<s.top()<<endl;//先入后出 s.pop(); //记得弹出 } } else { int a; cin>>a; s.push(a); } } } return 0; }
-
0
#include <bits/stdc++.h> using namespace std; char a[5]="pop",b[5]="push"; int n,m,k; int main() { std::ios::sync_with_stdio(false); cin>>n; while(n--) { cin>>m; stack<int> s; while(m--) { string c; cin>>c; if(c==a) { if(s.empty()) { cout<<"Empty"<<"\n"; } else { cout<<s.top()<<"\n"; s.pop(); } } else//这里不能写成 if(c==b) 卡了我一下 { cin>>k; s.push(k); } } } return 0; }
-
0
按栈的操作就好
#include<bits/stdc++.h> using namespace std; int t,n,x; char num[15]; int main() { std::ios::sync_with_stdio(false); cin>>t; while(t--) { stack<int> st; cin>>n; while(n--) { cin>>num; if(num[1]=='o') if(st.size()==0) cout<<"Empty"<<endl; else{ cout<<st.top()<<endl; st.pop(); } else{ cin>>x; st.push(x); } } } return 0; }
-
0
那个啥,strack是我向大佬学的,先前我用queue做不出来,实在没法了
#include<iostream> #include<queue> #include<string.h> #include<stack> using namespace std; int main() { char x[5]="pop",y[5]="push"; char a[5]; int T; scanf("%d",&T); while(T--) { int n; scanf("%d",&n); stack <int> num; while(n--){ scanf("%s",a); if(strcmp(a,x)==0){ if(num.size()==0)printf("Empty\n"); else { cout<<num.top()<<endl; num.pop(); } } if(strcmp(a,y)==0){ int b; scanf("%d\n",&b); num.push(b); } memset(a,0,sizeof(a)); } } return 0; }
- 1
Information
- ID
- 330
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 2
- Tags
- # Submissions
- 152
- Accepted
- 48
- Uploaded By