一开始是这么想的:
- 按照常识,一个数越小,则越高位的数值应该越小,如97531,重新排列后最小值为13579
- 要使得剩下的数最小,就先把这个大数按照字典序由小到大排列,然后才从后往前删去k个数。
代码
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int main() {
string s1;
int k = 0, ans = 0;
cin >> s1;
cin >> k;
sort(s1.begin(), s1.end());
for (int i = 0; i < s1.length(); i++)
{
if (s1[i] != '0')
{
ans = i;
break;
}
}
for (int i = 0 + ans; i < (s1.length()-k); i++)
{
cout << s1[i];
}
return 0;
}