1748: 删数问题
题目描述
给定n 位(n≤100)正整数a,去掉其中任意k≤n 个数字后,剩下的数字按原次序排列组成一个新的正整数。对于给定的n 位正整数a和正整数k,设计一个算法找出剩下数字组成的新数最小的删数方案。 对于给定的正整数a,计算删去k 个数字后得到的最小数。
输入
输入数据的第1 行是1 个正整数a。第2 行是正整数k。
输出
将计算出的最小数输出。
样例输入
178543
4
样例输出
13
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s;
int k;
cin >> s >> k;
int n = 0, i = -1;
int len = s.length();
while(n < k)
{
i ++;
if(s[i] > s[i + 1])
{
s.erase(i, 1);
n ++;
i = -1;
}
}
i = 0;
while(s[i] == '0')
i ++;
cout << s.substr(i, len) << endl;
return 0;
}

浙公网安备 33010602011771号