#include <iostream>
#include <string>
#include <cmath>
using namespace std;
int main()
{
int s[300] = {0}, n;
string str;
cin >> str >> n;
for (int i = str.length()-1; i >= 0;--i)
s[i] = str[i] - '0';
int s2[300] = {0}, last = 0, now = 0, j = 1;
s2[0] = s[0];
for (int i = 1;i < str.length() && n > 0;++i)
{
if(s2[j - 1] > s[i])
{
s2[j - 1] = s[i];
--n;
}
else
{
s2[j] = s[i];
++j;
}
}
for (int i = 0;i < j;++i)
cout << s2[i];
return 0;
}
我的思路是
比较输入的高精度数字(存在s里面)的每两位,如果前一位比后一位大就把前一位删掉,可用删数次数(n)-1,小的那个数进入栈s2,然后再把s2和s循环到的那一位比较,如果s2前面比s1当前位大再删,一直这样直到删的次数耗完为止,万分感谢