有一个长度为n(n <= 240)的正整数,从中取出k(k < n)个数,使剩余的数保持原来的次序不变,求这个正整数经过删数之后最小是多少。
输入格式:
n和k
输出格式:
一个数字,表示这个正整数经过删数之后的最小值。
输入样例:
178543 4
输出样例:
13
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;
int k=0,flog=0;
cin>>s>>k;
vector<int> ax,bx;
for(int i=0;i<s.size();i++){
ax.push_back(s[i]-'0');
bx.push_back(s[i]-'0');
}
while(k--){
for(int i=0;i<bx.size();i++){
vector<int> cx;
cx=bx;
cx.erase(cx.begin()+i);
if(ax>cx)
ax=cx;
}
bx=ax;
}
set<int> se;
for(int i=0;i<bx.size();i++)
se.insert(bx[i]);
if(se.size()==1&&*(se.begin())==0){
cout<<"0";
return 0;
}
for(int i=0;i<bx.size();i++){
if(i==0&&bx[i]==0)
flog=1;
if(!(bx[i]==0&&flog==1) )
cout<<bx[i];
}
}