2017校招-保留最大数
2018-03-18 16:36
225 查看
题目描述
给定一个十进制的正整数number,选择从里面去掉一部分数字,希望保留下来的数字组成的正整数最大。
输入描述:
输入为两行内容,第一行是正整数number,1 ≤ length(number) ≤ 50000。第二行是希望去掉的数字数量cnt 1 ≤ cnt < length(number)。
输出描述:
输出保留下来的结果。
示例1
输入
325 1
输出
35
给定一个十进制的正整数number,选择从里面去掉一部分数字,希望保留下来的数字组成的正整数最大。
输入描述:
输入为两行内容,第一行是正整数number,1 ≤ length(number) ≤ 50000。第二行是希望去掉的数字数量cnt 1 ≤ cnt < length(number)。
输出描述:
输出保留下来的结果。
示例1
输入
325 1
输出
35
#include<iostream> #include<string> using namespace std; /*思路:例如数字51643,需要删除3位数而使剩下的数字组合最大, 此时需要从头开始两个数字比较大小, 如果当前数字比其下一位小, 则删除当前数字,此时变为5643,继续从头开始遍历,5比6小,则删 除5,变为643继续从头遍历,当走到4的位置发现4比3大,而且4已 经是倒数第二位数字,则删除最后一位数字,就得到了64*/ int main() { string number; int count; int j; while (cin >> number) { cin >> count; for (int i = 0; i<count; i++) { int length = number.length(); for (j = 0; j<length - 1; j++) { if (number[j]<number[j + 1]) { number.erase(number.begin() + j); break; } } if (j == length - 1) //例如51643,当j到数字倒数第二位时,4比3大,此时要删除3, number.erase(number.end() - 1); j--; //每次都需要j--使j从数字的开始遍历。 } cout << number; } return 0; }
相关文章推荐
- 【nowcoder-2017校招真题】保留最大的数
- 携程校招2017编程题之股票最大利润
- 【newCoder】2017春招真题 保留最大的数
- 最大差值(2017某计算机校招笔试试题)
- 华为2017校招第二题删除重复的数,得到最大值。
- 美团2017校招-最大矩形面积
- 阿里巴巴2017校招C++岗位在线编程题-求集合D的最大值,最小值和元素个数三者之和
- 【名企笔试】美团2017校招笔试(最大矩形面积)
- 最长路径——百度2017校招机试题
- 2017京东校招笔试编程题:进制转换、辗转相除
- 2017腾讯校招编程
- 2017 京东校招编程题 进制转换
- 【美团校招笔试题】去除字符串首尾空格,中间多个空格只保留一个
- 牛客网——2017校招第二场编程题汇总
- 杭电2017新生赛1009-最大收益
- 百度2017校招java研发在线笔试
- 2017校招信息每日汇总(更新至8.4)
- 分析一下CSDN论坛中一个比较字段值保留最大并删除其它的帖子
- 求数组最大最小值[阿里2013校招题目]
- MySQL删除重复数据 并保留ID最大值