1049: Efface Numbers
Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 9 Solved: 4
[ Submit][ Status][ Web Board]
Description
你有一个长度为n的数字串, 现在要求你删除其中k个数字, 使得剩下的数字在不改变原有顺序的情况下,组成的数字最大.
Input
每组数据包含一个数字串(1 <= n <= 1000),和一个整数k (0 <= k < n).
Output
对于每组数据, 输出你的答案.
Sample Input
1452 2
33 0
Sample Output
52
33
做法:从左到右找到第一次出现的递减序列的最后一个值,删掉它。结尾用substr来保
证本身长度只有2但并非递减的情况
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<queue>
#include<set>
#include<map>
#include<sstream>
#include<algorithm>
#include<cmath>
#include<cstdlib>
using namespace std;
int main (void)
{
string s;
int i,j,k;
while (cin>>s>>k)
{
int len=s.size();
int tlen=len;
for (j=0; j<k; j++)
{
for (i=0; i<len; i++)
{
if(s[i]<s[i+1])
{
s.erase(i,1);
len--;
break;
}
}
}
cout<<s.substr(0,tlen-k)<<endl;
}
return 0;
}