栈和排序(感觉与排序无关)
栈和排序
http://www.nowcoder.com/questionTerminal/b10a7ac681e9429e89a6a510e5799647
此题从n,n-1....开始出栈(前提是能够出)
#include<iostream> #include<stack> #include<algorithm> #include<vector> using namespace std; const int N=1e6+10; int a[N]; vector<int> v;//存stk中剩余的数 stack<int> stk; int main(){ int n; cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=n;i++){ int j=n; stk.push(a[i]);//依次放入栈中 if(a[i]==j){//从n,n-1....开始出栈 stk.pop(); cout<<j<<" "; --j; } } //当然有未出完的部分 while(!stk.empty()){ v.push_back(stk.top()); stk.pop(); } for(int i=0;i<v.size();i++){ if(i==v.size()-1) cout<<v[i]; else cout<<v[i]<<' '; } return 0; }