前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >每日一题C++版(保留最大的数)

每日一题C++版(保留最大的数)

作者头像
小白学视觉
发布2019-10-24 01:47:44
5280
发布2019-10-24 01:47:44
举报
文章被收录于专栏:深度学习和计算机视觉

编程是很多偏计算机、人工智能领域必须掌握的一项技能,此编程能力在学习和工作中起着重要的作用。因此小白决定开辟一个新的板块“每日一题”,通过每天一道编程题目来强化和锻炼自己的编程能力(最起码不会忘记编程)

特别说明:编程题来自“牛客网”和“领扣”以及热心小伙伴的题目。由于小白有时想锻炼某一类编程方法,所以提供的代码不一定是最优解,但是本文提供的编程代码均为通过测试代码。

保留最大的数

题目描述

给定一个十进制的正整数number,选择从里面去掉一部分数字,希望保留下来的数字组成的正整数最大。

输入描述

输入为两行内容,第一行是正整数number,1 ≤ length(number) ≤ 50000。第二行是希望去掉的数字数量cnt 1 ≤ cnt

输出描述

输出保留下来的结果。

示例

输入

325 1

输出

35

解析

在一个整数中除去几位数字后剩余的数最大。这题的关键就在于我们如何去选择去掉的数字,也就是去掉数字的标准是什么。小白一幵始觉得除去最小的那几位数就可以了,但是这种想法是不对的。例如3120,如果去掉0为312,但是如果去掉1,则是320,要比312要大因此,我们可以判定,单纯的去掉最小的数是不对的。

正确的想法是去掉“比后一位”小的那位数,如果没有比后一位小的数(也就是整个数每一位都是递增的数),直接去掉最后一位;因为需要刪除数,因此使用list容器更加合理一些,而且list允许在首端插入,更加支持了用除以10余数的方法获取取每一位数。这里面要注意一个问题,就是每次只能去掉一个数,之后需要重新去寻找第—个比后一位小的数。

代码

代码语言:javascript
复制
#include <iostream>
#include <list>
using namespace std; 
int main()
{
  int number, cnt;
  while (cin>>number>>cnt)
  {
    list<int> Lnumber;
    while (number/10!=0)
    {
      Lnumber.push_front(number % 10);
      number = number / 10;
    }
    Lnumber.push_front(number);
    for (int i =0; i < cnt; i++)
    {
      for (auto  m = Lnumber.cbegin(); m != Lnumber.cend(); m++)
      {
        if (m==(--Lnumber.cend()))
        {
          m = Lnumber.erase(m);
          break;
        }
        auto n = m;
        if (*m<*(++n))
        {
          m = Lnumber.erase(m);
          break;
        }
      }
    }
    int lastnumber = 0;
    for (auto m:Lnumber)
    {
      lastnumber = lastnumber * 10 + m;
    }
    cout << lastnumber << endl;
  }
  return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-08-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小白学视觉 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 保留最大的数
    • 题目描述
      • 解析
        • 代码
        相关产品与服务
        容器服务
        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档