萍乡市网站建设_网站建设公司_字体设计_seo优化
2026/1/9 9:46:26 网站建设 项目流程

本文分享的必刷题目是从蓝桥云课洛谷AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。

欢迎大家订阅我的专栏:算法题解:C++与Python实现!

附上汇总贴:算法竞赛备考冲刺必刷题(C++) | 汇总


【题目来源】

洛谷:[P8082 COCI 2011/2012 #4] KEKS - 洛谷

【题目描述】

给定正整数N , K N,KN,K和一个N NN位数,求在N NN位数中删除K KK位后剩下的数的最大值。

【输入】

第一行,两个整数N , K N,KN,K

第二行,一个N NN位整数。保证没有前导0 00

【输出】

输出剩下的数的最大值。

【输入样例】

4 2 1924

【输出样例】

94

【算法标签】

《洛谷 P8082 KEKS》 #栈# #单调栈# #COCI(克罗地亚)# #2011#

【代码详解】

#include<bits/stdc++.h>usingnamespacestd;intn,k;// n: 字符串长度, k: 需要删除的字符数stack<char>sta;// 单调栈string ans,s;// ans: 结果字符串, s: 输入字符串intmain(){cin>>n>>k>>s;// 输入长度、删除字符数、字符串for(inti=0;i<s.size();i++)// 遍历字符串{// 当栈非空、栈顶字符小于当前字符、还有删除次数时while(sta.size()&&sta.top()<s[i]&&k){sta.pop();// 弹出栈顶k--;// 删除次数减1}sta.push(s[i]);// 当前字符入栈// 如果删除次数用完了if(k==0){// 将栈中所有字符加入结果while(sta.size()){ans=sta.top()+ans;// 从栈顶到栈底构建字符串sta.pop();}// 将剩余字符加到结果后面for(intj=i+1;j<s.size();j++)ans+=s[j];break;// 结束循环}}cout<<ans<<endl;// 输出结果return0;}

【运行结果】

4 2 1924 94

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询