http://acm.hdu.edu.cn/showproblem.php?pid=3183
题意:从一个数里删除n个数字,使其最小
分析:只需判断第i个数是否大于第i+1个数,实则删掉,否则继续寻找;注意0的存在,只要第二位数是0,直接删除第一个数即可,因为数的位数减少了
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
using namespace std;
int main()
{
string str,str1,str2;
int i,n,len;
while(cin>>str>>n)
{
while(n--&&str.size()>0)
{
len=str.size();
i=1;
if(str[i]=='0')
{
while(str[i]=='0')
i++;
str.assign(str,i,len);
}
else if(str[0]<=str[i])
{
while(str[i-1]<=str[i])
i++;
str1.assign(str,0,i-1);
str2.assign(str,i,len);
str=str1+str2;
}
else
{
str.assign(str,i,len);
}
}
if(str.size()==0)
cout<<"0"<<endl;
else
cout<<str<<endl;
}
return 0;
}