当前位置: 首页 > news >正文

算法竞赛c++.新人每日一练.贪心算法(P1106删数问题 洛谷)

该题仍然是贪心思维,但是不能只思考删去最大的数字。如反例13245,做一次删数操作。删去最大的数得到1324,但删去3得到的数是1245.这是因为虽然删去的5是虽然是最大的数,但是3还在数字的高位上(就是百位)。所以要分情况讨论一下,如果是递增的数字12345,那删去最大的数字5是没问题的。但如果是有递减的部分如13245,那么应该删去先删去3这样的数字,使得数字重新成为递增的1245。

#include<iostream> #include<string> using namespace std; char a[1001]; int k, len; int main() {//123465 cin >> a >> k; len = strlen(a); for (int i = 1; i <= k; i++)//该循环 循环 k次做删数 { for (int j = 0; j < len; j++) //该循环是单次的删数 { //if 检测是否有递增的部分,发现有进行删数处理 if (a[j] > a[j + 1]) { for (int l = j; l < len; l++) a[l] = a[l + 1]; len--; break; } } } int t = 0; //此处进行删除前面多余的0操作,如100009,删去1 应该为0 while (t < len && a[t] == '0') t++; if (t == len)cout << "0"; else for (int i = t; i < len; i++) cout << a[i]; return 0; }

很多读者会疑惑: 如果数字是完全递增的 12345,代码里没有专门写“删除最后一位”,为什么还能正确运行?

秘密在于: 我们的数组 a 是全局变量,未手动赋值的位置会自动初始化为 0。 当遍历到 j = len-1(即数字最后一位 5)时: a[j] = '5' ,a[j+1] = 自动赋的 '0' 满足 a[j] > a[j+1],因此会删除最后一位 5,完美处理了完全递增的情况。

特别注意:

如果数字结尾是 0,例如 123450, 遍历到 5 和 0 时会触发递减检查,删除 5,得到 12340,而不是保留 5。 这也符合贪心规则。

本文参考书籍:《趣味算法:用C++实现》作者:喻蓉蓉 刘弘洋

http://www.cnnetsun.cn/news/1905898.html

相关文章:

  • 终极黑苹果休眠问题解决方案:Hackintosh项目完整指南
  • 信创实践录——Vastbase G100数据库容器化部署全攻略
  • 极域电子教室终极破解指南:如何用JiYuTrainer实现自主学习与教学平衡
  • 从7V到28V宽压输入,手把手教你用MPS1584设计一个5V/3A的DCDC电源模块(附原理图详解)
  • RINEX观测值文件处理避坑指南:从文件头异常到数据块溢出的解决方案
  • 李慕婉-仙逆-造相Z-Turbo 从提示词到精美图片:深度解析提示词工程核心技巧
  • 免费获取百度文库文档的简单高效方案
  • 解决游戏资源逆向工程难题的QuickBMS深度解析
  • Memtest86+终极实战指南:从内存故障排查到系统稳定性优化
  • Windows平台APK安装终极指南:快速批量处理Android应用的完整方案
  • A-29P AI 降噪回音消除模块详解:高性能 DSP 语音处理方案全解析
  • UVM实战:为什么uvm_tlm_analysis_fifo不用phase机制也能跑?(附源码解析)
  • 从DETR到Co-DETR:一文读懂目标检测中的标签分配演进史
  • 【中断机制】硬中断与软中断:原理、区别及实战应用
  • 科哥版Z-Image-Turbo使用手册:WebUI界面功能详解与实操
  • LightGBM/XGBoost模型预处理:为什么你可以跳过归一化这一步?
  • 10秒复刻生产级环境:VMware Workstation克隆与快照终极工作流
  • libIEC61850:重新定义电力自动化通信的开源架构范式
  • 为什么metasfresh可能是最适合中小型制造企业的开源ERP?从架构到实战解析
  • 新手踩坑实战nomic-embed-text-v2-moe 教程:用 Streamlit 替代 Gradio 构建嵌入服务前端
  • 告别电脑卡顿:3分钟学会用Mem Reduct让Windows内存管理效率翻倍
  • 告别云端依赖!DeepEval本地模型评测全攻略:数据安全+零成本的LLM测试方案
  • 如何用G-Helper彻底告别华硕笔记本的臃肿控制中心?
  • 5分钟搞定B站视频下载:BilibiliDown终极免费神器使用指南
  • U-Net模型进行训练钢材表面缺陷语义分割数据集 通过钢材缺陷分割数据集的权重模型,推理识别钢材分割
  • 紫光同创PDS在线仿真避坑指南:手把手教你处理信号被优化的问题
  • 如何彻底卸载Microsoft Edge:EdgeRemover工具终极指南
  • 从CLIP到Qwen-VL-MoE:多模态域适应演进图谱(2018–2024关键论文脉络+工业落地成熟度雷达图)
  • 液态神经网络(LTCs)在连续时间控制中的可解释性设计与应用
  • AGI 的进化之路:从技术突破到伦理挑战