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; }