个人感觉是个特别经典的题目:
有两个关键点:
1.剩下的数最小
2.删除的数小于等于n;
1:使剩下的数最小:
思路:依次遍历正整数的各位数字,将单调递减区间的的第一个数删掉,
如果整个字符串已经单调递增就删除最后的数:
代码如下:
#include <bits/stdc++.h>
using namespace std;
int t;
char a[1010];
int main() {
int k;
while(cin >> t >> k){
string s;
for(int i=0; i<t; i++){
cin >> a[i];
s += a[i];
}
if (k == t){
cout << "0" << endl;
}else{
while(k) {
int i;
for (i = 0; i < s.size() - 1 && s[i] <= s[i + 1]; i++);
s.erase(i, 1);
k--;
}
int i;
for (i = 0; i < s.size()-1;) {
if (s[i] == '0') i++;
else break;
}
if(i == s.size()-1)cout <<"0"<<endl;
else cout << s.substr(i) << endl;
}
}
return 0;
}