有一个长度为n(n <= 240)的正整数,从中取出k(k < n)个数,使剩余的数保持原来的次序不变,求这个正整数经过删数之后最小是多少。
输入格式:
n和k
输出格式:
一个数字,表示这个正整数经过删数之后的最小值。
输入样例:
178543 4
输出样例:
13
代码
#include <iostream>
#include <cstring>
using namespace std;
int shanshu(char *a, int k)
{
int n = strlen(a);
while (k > 0)
{
for (int i = 0; i < n; i++)
{
if (i == n - 1)
{
n--;
break;
}
else if (a[i] > a[i + 1])
{
for (int j = i; j < n - 1; j++)
{
a[j] = a[j + 1];
}
n--;
break;
}
}
k--;
}
return n;
}
int main()
{
char *in = new char();
cin >> in;
int k;
cin >> k;
int m = shanshu(in, k);
int b = 0;
while ((b < (m - 1)) && (in[b] == '0'))
b++;
for (int i = b; i < m; i++)
{
cout << in[i];
}
return 0;
}