A25796. 删除数字
填空题
中等
知识点
题目描述
删除数字
题目描述
老师在黑板上写了一个不超过 500 位的正整数 n(1≤n<10500),要求同学们删除其中任意 k 个数字, 剩余数字的顺序不变,希望得到的数最大。
例如:n = 69134,k = 2,从 69134 中删除 2 个数字,将第一位 6 和第三位 1 删除,得到的新数 934 是最大的。

输入描述
输入两个整数 n 和 k(1≤n<10500,0≤k<n的位数),整数之间以一个空格隔开
输出描述
输出一个整数,表示删除 k 个数字后,得到的最大数
样例输入
69134 2样例输出
934参考答案
#include <bits/stdc++.h>
using namespace std;
string n;
int main() {
int k;
cin >> n >> k;
while (k--) {
int i, ln = n.size();
for (i = 1; i < ln; i++) {
if (n[i] > n[i - 1]) {
n.erase(i - 1, 1);
break;
}
}
if (i == ln)
n.erase(ln - 1, 1);
}
cout << n;
return 0;
}
上一题
下一题