洛谷 P1106 删数

news/2024/11/25 3:05:31/

删数问题

题目描述

键盘输入一个高精度的正整数 NNN(不超过 250250250 位),去掉其中任意 kkk 个数字后剩下的数字按原左右次序将组成一个新的非负整数。编程对给定的 NNNkkk,寻找一种方案使得剩下的数字组成的新数最小。

输入格式

输入两行正整数。

第一行输入一个高精度的正整数 nnn

第二行输入一个正整数 kkk,表示需要删除的数字个数。

输出格式

输出一个整数,最后剩下的最小数。

样例 #1

样例输入 #1

175438 
4

样例输出 #1

13

解题思路

这道题我一开始想的是可不可以排序,把最大的几个数给删掉,后来发现不行,因为题目要求左右次序得不变,例如,考虑141519 2这个输入,如果直接删掉两个最大的得到是1411,实际上最小的应该是1119,应该删掉 4 和 5,实际上,可以发现被删的数都是一个山峰,而我们要做的就是把后面比这个山峰小的数移到前面来,也就是我们需要删掉 s[i]≥s[i+1]s[i] \geq s[i+1]s[i]s[i+1]需要注意的是最后前导0的处理,例如:00000123,应该输出123

代码

#include<iostream>
#include<string>
using namespace std;int main()
{string s;cin >> s;int k;cin >> k;int len = s.length();int a = len, b = k;// 保护初始值,最后需要输出 a-b个字符s = " " + s;while(k--){for(int i=1;i<len;i++){if(s[i]>s[i+1])//若出现山峰{for(int j=i;j<len;j++)//后面的字符往前移{s[j] = s[j+1];}len--;break;}}}int i = 1;while(i<=len&&s[i]=='0') i++,b++;//对前导0的处理,这里的b++相当于把0删掉了if(i==len+1) cout << 0;//0000000 最后输出0else {for(int j=i, cnt=0;cnt<a-b;cnt++,j++) cout << s[j];}return 0;
}

http://www.ppmy.cn/news/22796.html

相关文章

JavaSE中级之集合四--Set接口

Set接口直接继承Collection接口List接口是不唯一且有序的Set相对于List接口是唯一且无序的&#xff0c;无序不等于随机HashSet实现类特点存入Integer类型的数据&#xff0c;当集合中有相同的数据时只会存相同的数据的第一个数据存入String数据的时候同Integer数据一样HashSet&l…

DFS BFS学习笔记

前言&#xff1a; 当前文章为学习笔记&#xff0c;消化大神的思想笔记&#xff0c;然后按照大神的思路梳理一遍 深度优先 (Depth first search, DFS); 深度优先搜索的步骤分为 1.递归下去 2.回溯上来。 顾名思义&#xff0c;深度优先&#xff0c;则是以深度为准则&#xff1a; …

Redis持久化策略(RDB/AOF)及选型

Redis持久化策略&#xff08;RDB/AOF&#xff09;及选型 1. Redis持久化策略 Redis持久化的意义&#xff1a;防止服务或系统宕机导致数据丢失。 Redis提供了两种持久化策略&#xff1a;RDB&#xff08;Redis DataBase&#xff09;、AOF&#xff08;Append Only File&#xff0…

京东一面:20种异步,你知道几种? 含协程

背景说明&#xff1a; 异步&#xff0c;作为性能调优核心方式之一&#xff0c;经常被用于各种高并发场景。 很多场景多会使用到异步&#xff0c;比如&#xff1a; 场景1&#xff1a; 超高并发 批量 写 mysql 、批量写 elasticSearch 场景2&#xff1a; 超高并发 批量 IO 场景…

手把手带你玩转分散加载

&#xff08;简单地说&#xff09;分散加载的目的就是让MCU内核知道哪里存的是代码、哪里存的是数据&#xff0c;去哪个特定的地址找到下一步需要运行的函数&#xff0c;并且告诉编译器把每一个编译好的函数、数据放到具体的哪一个物理地址。 &#xff08;专业地说&#xff09…

【开源WebGIS】07-Openlayers+Vue 测量功能-02

在上一节中&#xff0c;我们实现了基础的测量功能。但是实现的测量功能还有很多问题,还有很多东西可以细化&#xff0c;主要细化以下几个方面&#xff1a; 绘制的提示文字 绘制结果的显示 最终实现相对完整的测量功能&#xff0c;展示如下&#xff1a; 创建一个绘制提示的函…

XCP实战系列介绍06-CANape标定及标定后hex生成操作指导

本文框架 1.概述2. CANape工程建立3. XCP标定及后处理介绍3.1 CANape标定3.2 标定数据保存3.3保存标定结果到原hex3.4 将标定结果copy到hex中3.5 生成新的hex1.概述 在前面一篇文章《看了就会的XCP协议介绍》中详细介绍了XCP的协议,在《XCP实战系列介绍01-测量与标定底层逻辑…

【C++初阶】八、STL---list模拟实现

目录 一、模拟实现接口总览 二、整体框架搭建 2.1 节点类框架搭建 2.2 头节点类框架搭建&#xff08;list模拟实现主体&#xff09; 2.3 迭代器类框架搭建 2.3.1 迭代器分类 2.3.2 list 所需迭代器分析 2.3.3 list普通迭代器实现 2.3.4 list的const迭代器实现 2.3.5 …