解题思路:用一个vector存下数据,从头开始非递增遍历,并把符合条件的删除,一次操作,ans++,当vector为空时退出循环。(PS:学到了vector的erase操作,竟然还有返回值,涨姿势了)
AC代码:
#include<iostream> #include<cstdio> #include<cstring> #include<vector> using namespace std; int n; vector<int > vei; int main() { while(~scanf("%d",&n)) { int x; for (int i=0; i<n; i++) { scanf("%d",&x); vei.push_back(x); } vector<int>::iterator it; int x1; int ans=0; while(!vei.empty()) { x1=*(vei.begin()); for (it=vei.begin(); it!=vei.end(); ) { x=(*it); if (x1>=x) { it=vei.erase(it);//erase的返回值是下一个元素的迭代器 x1=x; } else { it++; } } ans++; } cout<<ans<<endl; } return 0; }