news 2026/4/26 3:11:02

csp信奥赛C++高频考点专项训练之贪心算法 --【删数问题】:删数问题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
csp信奥赛C++高频考点专项训练之贪心算法 --【删数问题】:删数问题

csp信奥赛C++高频考点专项训练之贪心算法 --【删数问题】:删数问题

题目描述

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

输入格式

输入两行正整数。

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

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

输出格式

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

输入输出样例 1
输入 1
175438 4
输出 1
13
说明/提示

len ⁡ ( n ) \operatorname{len}(n)len(n)表示n nn位数,保证1 ≤ k < len ⁡ ( n ) ≤ 250 1 \leq k < \operatorname{len}(n) \leq 2501k<len(n)250

注意:去掉若干数字后剩下的数可以存在前导零,而输出时不要输出前导零。

思路分析

直接贪心删除策略:每次删除一个数字,重复 k 次。
具体思路如下:

  1. 循环 k 次:每次删除一个数字,目标是让剩下的数最小。
  2. 寻找删除位置:从左到右扫描数字串,找到第一个满足n[j] > n[j+1]的位置 j(即“下降点”)。这个位置上的数字比它右边的数字大,删除它可以减小高位数值。如果整个序列是非递减的(即没有下降点),则删除最后一个数字。
  3. 删除操作:用erase(p,1)删除找到的位置 p 上的字符。
  4. 去除前导零:删除完成后,如果结果字符串长度大于1且开头是 ‘0’,则循环删除开头的零。
  5. 输出结果:输出剩余字符串(若全为零则输出一个“0”)。

代码实现

#include<bits/stdc++.h>// 万能头文件usingnamespacestd;string n;// 存储输入的高精度数字intk;// 需要删除的数字个数intmain(){cin>>n>>k;// 读入数字串和kfor(inti=1;i<=k;i++){// 重复删除k次intp=n.size()-1;// 默认删除最后一个字符(当序列非递减时)for(intj=0;j<=n.size()-2;j++){// 从左到右扫描相邻两位if(n[j]>n[j+1]){// 找到第一个下降点(左边大于右边)p=j;// 记录要删除的位置break;// 立即退出扫描}}n.erase(p,1);// 删除该位置的一个字符}// 去除前导零,但至少保留一个数字(防止全删后为空)while(n.size()>1&&n[0]=='0'){n.erase(0,1);// 删除开头的'0'}cout<<n<<endl;// 输出结果return0;}

功能分析

  • 输入:高精度正整数n(字符串形式,长度≤250)和正整数k(k < len(n))。
  • 处理流程
    1. 重复 k 次删除操作,每次找到第一个“左边>右边”的位置并删除该左边数字;若无下降点则删除末尾数字。
    2. 删除完成后,去掉所有前导零(但若全部为零则保留一个“0”)。
  • 输出:删除 k 个数字后能得到的最小数字(无前导零)。
  • 正确性:基于贪心原理——每次删除第一个下降点能保证当前步最优,最终结果全局最优。
  • 时间复杂度:O(k·len),在题目限制下(len≤250)完全可接受。
  • 空间复杂度:O(len),仅使用原字符串和几个变量。

各种学习资料,助力大家一站式学习和提升!!!

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"########## 一站式掌握信奥赛知识! ##########";cout<<"############# 冲刺信奥赛拿奖! #############";cout<<"###### 课程购买后永久学习,不受限制! ######";return0;}

【秘籍汇总】(完整csp信奥赛C++学习资料):

1、csp/信奥赛C++,完整信奥赛系列课程(永久学习):

https://edu.csdn.net/lecturer/7901 点击跳转

2、CSP信奥赛C++竞赛拿奖视频课:

https://edu.csdn.net/course/detail/40437 点击跳转

https://edu.csdn.net/course/detail/41081 点击跳转

3、csp信奥赛高频考点知识详解及案例实践:

CSP信奥赛C++动态规划:
https://blog.csdn.net/weixin_66461496/category_13096895.html点击跳转

CSP信奥赛C++标准模板库STL:
https://blog.csdn.net/weixin_66461496/category_13108077.html 点击跳转

信奥赛C++提高组csp-s知识详解及案例实践:
https://blog.csdn.net/weixin_66461496/category_13113932.html 点击跳转

4、csp信奥赛冲刺一等奖有效刷题题解:

CSP信奥赛C++初赛及复赛高频考点真题解析(持续更新):https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转

信奥赛C++提高组csp-s初赛&复赛真题题解(持续更新):
https://blog.csdn.net/weixin_66461496/category_13125089.html 点击跳转

5、GESP C++考级真题题解:

GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转

GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转


GESP(C++ 七级+八级)真题题解(持续更新):
https://blog.csdn.net/weixin_66461496/category_13117178.html 点击跳转

· 文末祝福 ·

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"跟着王老师一起学习信奥赛C++";cout<<" 成就更好的自己! ";cout<<" csp信奥赛一等奖属于你! ";return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/26 3:09:53

如何配置Oracle UTL_FILE目录_CREATE DIRECTORY语法与权限分配.txt

Navicat导出CSV为空的主因是数据未被真正选中或权限不足&#xff1a;需确认状态栏“已选Y条”非零、勾选“导出所有记录”、且用户具备目标表SELECT权限。导出CSV时文件为空但Navicat显示有数据这是典型的数据没真正“被选中”导出&#xff0c;不是bug&#xff0c;而是navicat在…

作者头像 李华
网站建设 2026/4/26 3:09:49

3分钟学会搭建私有AI平台:Open WebUI完全指南

3分钟学会搭建私有AI平台&#xff1a;Open WebUI完全指南 【免费下载链接】open-webui User-friendly AI Interface (Supports Ollama, OpenAI API, ...) 项目地址: https://gitcode.com/GitHub_Trending/op/open-webui 想要在本地部署一个功能完整的AI对话平台&#xf…

作者头像 李华
网站建设 2026/4/26 3:06:29

XDCP数字电位器在可编程I-V转换器中的应用与优化

1. T网络与XDCP在可编程I-V转换器中的核心原理电流-电压转换器&#xff08;I-V转换器&#xff09;是模拟电路设计中的基础模块&#xff0c;广泛应用于传感器信号调理、精密测量等领域。传统方案采用运算放大器配合固定电阻网络实现信号转换&#xff0c;但存在量程固定、小电流测…

作者头像 李华
网站建设 2026/4/26 3:03:21

Julep开源智能体开发平台:构建具备记忆与角色的AI应用实战指南

1. 项目概述&#xff1a;当AI学会“角色扮演”&#xff0c;Julep如何重塑人机交互范式最近在AI应用开发圈子里&#xff0c;一个名为Julep的开源项目热度持续攀升。如果你还在为构建一个能记住上下文、拥有稳定“人设”、并能执行复杂多步任务的智能体而头疼&#xff0c;那么Jul…

作者头像 李华
网站建设 2026/4/26 3:02:21

ARM CP15协处理器架构与缓存控制技术详解

1. ARM CP15协处理器架构解析在ARMv7架构中&#xff0c;CP15协处理器承担着系统控制的核心职能。作为特权模式下才能访问的硬件模块&#xff0c;它通过一组专用寄存器实现对内存管理单元&#xff08;MMU&#xff09;、缓存子系统、TLB等关键组件的精细控制。与通用寄存器不同&a…

作者头像 李华