本次是一个整数,随意抽取其中的n个位置上的数值,求剩下的整数最大值是多少.
条件:整数 去掉n位 顺序不变 剩下的最大值
本题目又是一个将整型问题转化成字符串问题的经典案例,如果一个整数取出几位,保持最大,那么只要保证取出的位置的数值比前一位小就行了。
这个时候对应到字符串上就是取出某个位置的数值,而且该位置的数值比后一位的数值小。
比如原始整数是5263452,要求取出3位,那么基本算法就是依次比较,5>2,2<6那么去掉2,依次执行之后就是:
652 参考code如下:
#include <iostream>
#include <string>
#include <algorithm>
#include <cstring>
using namespace std;
int main()
{
string N;
while (cin >> N )
{
int cnt;
cin>> cnt;
int j=0;
for (int i = 0; i<cnt; i++)
{
int len = N.size();
for (j=0; j<len - 1; j++)
{
if (N[j] < N[j + 1])
{
N.erase(N.begin()+j);
break;
}
}
if (j==len-1)
N.erase(N.end() - 1);
}
cout << N;
}
return 0;
}