HDU 1257 最少拦截系统(贪心)

来源:互联网 发布:水果竞猜php源码 编辑:程序博客网 时间:2024/05/16 09:40

解题思路:

用一个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;}


0 0
原创粉丝点击