笔试题:给定一个十进制的正整数number,选择从里面去掉一部分数字,希望保留下来的数字组成的正整数最大。
思路:从左到右遍历,删除第一个左边小于右边的数字,如果全部递减,则删除最后一个
// 保留最大的数.cpp : 定义控制台应用程序的入口点。
//
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s;
int cnt;
cin >> s;
cin >> cnt;
int j = 0;
for (int i = 0; i < cnt; i++){// 删除cnt个数字
int slen = s.size();
for (j=0; j < slen - 1; j++){
if (s[j] < s[j + 1]){
s.erase(s.begin() + j);
break;
}
}
if (j == slen - 1) // 如果序列递减,则从后面删除
s.erase(s.end() - 1);
}
cout << s;
//system("pause");
return 0;
}