删数
题目描述
输入一个高精度的正整数 n(长度小于或等于 240 位),去掉其中任意 s 个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对给定的 n 和 s,寻找一种方案,使得剩下的数字组成的新数最小。
输入格式
输入两行,第 1 行为 1 个正整数 n,第 2 行为 1 个整数 s。
输出格式
输出一行一个数,表示最后剩下的最小数。
输入样例
178543
4
输出样例
13
主要思路
举个栗子:一个正整数a为 785314,经过删数后得到的最小的正整数应该是 14。
这道题乍好像挺简单,我排个序,删4个最大值不就解决了吗? 但仔细一看,好像又不太对,上面例子删4个最大值后的值是31,明显不等于14。 我们观察上面栗子,发现比4小的3因为和1逆序排列而被删除。进一步总结就是从第一个数开始一个数比后一个数大就删除这个数,最后就可以得到一个最小数。 所以进一步总结,这道题是贪心?
money?
——————AC代码
#include<bits/stdc++.h>
using namespace std;
string n;int s;
int main(){
cin>>n>>s;
while(s){
int t=0;
while(t<n.size()-1&&n[t]<=n[t+1])t++;
n.erase(t,1);
s--;
}
while(n.size()>1&&n[0]=='0')n.erase(0, 1);
cout<<n;
}
本文来自博客园,作者:蒟蒻orz,转载请注明原文链接:https://www.cnblogs.com/orzz/p/18122223
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话