给定n位正整数a,去掉其中任意k个数字后,剩下的数字按原次序排列组成一个新的正整数。对于给定的n和k,设计一个算法,找出剩下数字组成的新数最小的删数方案。
输入示例: 178543 4
输出: 13
方法:
从高位->低位方向搜索递减区间,若不存在,删最后一位,存在,删递减区间第一位,循环k
次**
#include<iostream>
#include<string>
using namespace std;
int main()
{
string num;
int k;
cin>>num>>k;
if(k >= num.size())
{
num.erase();
return 0;
}
while(k > 0)
{
int i;
for(i = 0; (i < num.size()-1) && num[i] <= num[i+1]; i++)
;
num.erase(i,1);
k--;
}
cout<<num<<endl;
return 0;
}