9、保留最大的数

(个人水平有限,请见谅!)

题目描述:

给定一个十进制的正整数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;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_30534935/article/details/82917961