算法设计与分析 | 删数问题

2024-01-04 12:04

本文主要是介绍算法设计与分析 | 删数问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目描述
给定n位正整数a,去掉其中任意k个数字后,剩下的数字按原次序排列成一个新的正整数。 
n (1<=n<=200)位的正整数a和k,k小于n。
输入
可输入多组测试数据,每组测试数据分两行,每行一个数,数的含义如下。 
第一行:正整数a(a是大于0的一个n位正整数) 
第二行:正整数k 
以0来结束测试数据。
输出
输出每组测试数据所得出的删k位数之后的最小数。 
若输出的数首位是0,无须理会,0也直接输出即可。例如:024,就直接输出024,无须改成24。
样例输入 
178543
4
87654321
2
123456789
1
254193
1
90249
2
0
样例输出 
13
654321
12345678
24193
024

分析:

其实删数问题就是比较输入的每一位数字的大小,然后把位置在前面的并且数字比后面一位数字大的先删除,其中使用的是c++里面的erase()函数进行删除:

erase(pos,n); 删除从pos开始的n个字符,比如erase(0,1)就是删除第一个字符

定义了flag来及时结束循环,

string result = s.erase(len - c, s.size() - len + c);

上面这个代码是来解决:如果前面的数字都比后面一位的数字都要小的情况下,然后要删除后面的数字,就可以获得最小数。

代码:

#include <iostream>
#include <string>
using namespace std;
//删数问题
string delete_num(string s, int sz) {int len = s.size();int c = sz;while (sz--) {bool flag = false;for (int i = 0; i < len; i++) {if (s[i] > s[i + 1]) {s.erase(i,1);flag = true;break;}}if (flag == false) break;}string result = s.erase(len - c, s.size() - len + c);return result;}int main() {string str;  int s;   while (true){cin >> str;if (str == "0"){break;}cin >> s;cout << delete_num(str, s) << endl;   }}

这篇关于算法设计与分析 | 删数问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/569270

相关文章

MySQL 内存使用率常用分析语句

《MySQL内存使用率常用分析语句》用户整理了MySQL内存占用过高的分析方法,涵盖操作系统层确认及数据库层bufferpool、内存模块差值、线程状态、performance_schema性能数据... 目录一、 OS层二、 DB层1. 全局情况2. 内存占js用详情最近连续遇到mysql内存占用过高导致

解决pandas无法读取csv文件数据的问题

《解决pandas无法读取csv文件数据的问题》本文讲述作者用Pandas读取CSV文件时因参数设置不当导致数据错位,通过调整delimiter和on_bad_lines参数最终解决问题,并强调正确参... 目录一、前言二、问题复现1. 问题2. 通过 on_bad_lines=‘warn’ 跳过异常数据3

解决RocketMQ的幂等性问题

《解决RocketMQ的幂等性问题》重复消费因调用链路长、消息发送超时或消费者故障导致,通过生产者消息查询、Redis缓存及消费者唯一主键可以确保幂等性,避免重复处理,本文主要介绍了解决RocketM... 目录造成重复消费的原因解决方法生产者端消费者端代码实现造成重复消费的原因当系统的调用链路比较长的时

Mysql中设计数据表的过程解析

《Mysql中设计数据表的过程解析》数据库约束通过NOTNULL、UNIQUE、DEFAULT、主键和外键等规则保障数据完整性,自动校验数据,减少人工错误,提升数据一致性和业务逻辑严谨性,本文介绍My... 目录1.引言2.NOT NULL——制定某列不可以存储NULL值2.UNIQUE——保证某一列的每一

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

kkFileView启动报错:报错2003端口占用的问题及解决

《kkFileView启动报错:报错2003端口占用的问题及解决》kkFileView启动报错因office组件2003端口未关闭,解决:查杀占用端口的进程,终止Java进程,使用shutdown.s... 目录原因解决总结kkFileViewjavascript启动报错启动office组件失败,请检查of

SpringBoot 异常处理/自定义格式校验的问题实例详解

《SpringBoot异常处理/自定义格式校验的问题实例详解》文章探讨SpringBoot中自定义注解校验问题,区分参数级与类级约束触发的异常类型,建议通过@RestControllerAdvice... 目录1. 问题简要描述2. 异常触发1) 参数级别约束2) 类级别约束3. 异常处理1) 字段级别约束

Olingo分析和实践之EDM 辅助序列化器详解(最佳实践)

《Olingo分析和实践之EDM辅助序列化器详解(最佳实践)》EDM辅助序列化器是ApacheOlingoOData框架中无需完整EDM模型的智能序列化工具,通过运行时类型推断实现灵活数据转换,适用... 目录概念与定义什么是 EDM 辅助序列化器?核心概念设计目标核心特点1. EDM 信息可选2. 智能类

Olingo分析和实践之OData框架核心组件初始化(关键步骤)

《Olingo分析和实践之OData框架核心组件初始化(关键步骤)》ODataSpringBootService通过初始化OData实例和服务元数据,构建框架核心能力与数据模型结构,实现序列化、URI... 目录概述第一步:OData实例创建1.1 OData.newInstance() 详细分析1.1.1

Olingo分析和实践之ODataImpl详细分析(重要方法详解)

《Olingo分析和实践之ODataImpl详细分析(重要方法详解)》ODataImpl.java是ApacheOlingoOData框架的核心工厂类,负责创建序列化器、反序列化器和处理器等组件,... 目录概述主要职责类结构与继承关系核心功能分析1. 序列化器管理2. 反序列化器管理3. 处理器管理重要方