描述
输入一个高精度的正整数n(<=240位),
去掉任意s个数字后剩下的数字按原左右次序将组成一个新的整数。
编程对给定的n和s,寻找一种方案,使得剩下的数最小。
输入
第一行:长度为n的正整数
第二行:要删除数字的个数s
输出
删除后剩余的最小数
输入样例 1
178543
4
输出样例 1
13
题目要求删除一些数据以达到这个删除后的数最小,那么就是每次都删除一个连续不降序里面的最大值,为什么是不降序呢,因为还有可能整个序列只有一个数据,这样和后面对比反而是降序了,这个时候就删除这个降序的第一个数据,就类似其实这是一个一个数据的升序。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string n;
int a;
while(cin>>n>>a)
{
while(a--)
{
int i=0;
while(n[i]<=n[i+1])
i++;
n.erase(i,1);
}
int i=0;
for(i;i<n.size();i++)
if(n[i]!='0')
break;
for(i;i<n.size();i++)
cout<<n[i];
cout<<endl;
}
return 0;
}