一、题目描述
二、解题思路
该问题的一个简单解题思路,就是从左到右依次判断每一位数,若该位上的数字比后一位的数字大,则删掉该位置上的数字,然后回到开头继续执行判断操作,等到删够 k 位后,处理一下开头可能会有的 0 ,便可得到结果。如果没有数字比它的后一位大,即无法通过比较大小来删除,且已删除的位数不足 k,则从后往前依次删除,直到删够 k 位,处理一下开头可能会有的 0 ,便可得到结果。
举例如下:
n = 5, k = 3;
a = 21053;
第一次判断:2 比 1 大,删掉 2,得 1053 ,从头继续。
第二次判断:1 比 0 大,删掉 1 ,得 053, 从头继续。
第三次判断: 5 比 3 大,删掉 5,得 03。
已经删够 k 位, 得到结果为 3。
n = 6, k = 4;
a = 103289;
第一次判断:1 比 0 大,删掉 1,得 03289,从头继续。
第二次判断:3 比 2 大,删掉 3,得 0289,从头继续。
第三次判断:没有数字比它的后一位大,但没有删够 k 位,所以从后往前,删掉 9 和 8 ,得到结果为 02, 输出为 2。
三、代码实现
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int n, k = 0;
vector<