(个人水平有限,请见谅!)
题目描述:
给定一个十进制的正整数number,选择从里面去掉一部分数字,希望保留下来的数字组成的正整数最大。
输入描述:
输入为两行内容,第一行是正整数number,1 ≤ length(number) ≤ 50000。
第二行是希望去掉的数字数量cnt 1 ≤ cnt < length(number)。
输出描述:
输出保留下来的结果。
输入:
325 1
输出:
35
代码示例:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
string str;
int cnt;
int pos = 0, max_pos = 0;
cin >> str >> cnt;
while (cnt > 0)
{
if (cnt == str.size()-pos)
{
str.erase(pos, str.size()-pos);
cout << str;
break;
}
max_pos = pos;
for (int i = pos; i <= pos + cnt; i++)
if (str[i] > str[max_pos])
max_pos = i;
str.erase(pos, max_pos-pos);
cnt = cnt - (max_pos-pos);
pos++;
if (cnt == 0)
cout << str;
}
}