作者:xq的acm之路
贪心算法
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2486
题目大意:给出一个n位的数,去掉d个数使之最大
思路:一个一个的输入数字,发现前面有比它小的数,就删除,直到删除了d个数,要想数最大,保证高位最大就哦了,,,
贪心算法题,算简单了,,,一遍ac了 ,,,
代码如下:
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
int main()
{
int n,d;
while(cin>>n>>d&&n)
{
vector<int>s;
getchar();
char c;
int l=n-d;
for(int i=0; i<n; i++)
{
c=getchar();
int a=c-'0';
if(s.size()>0)
{
int p=s.size()-1;
while(d&&a>s[p]&&p>=0)
{
s.erase(s.begin()+p);
p--;
d--;
}
}
if(s.size()!=l) s.push_back(a);
}
for(int i=0;i<s.size();i++)
cout<<s[i];
cout<<endl;
}
return 0;
}