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

本文探讨了一种高精度正整数n在删除s个数字后的最小值问题。采用贪心算法,从左到右遍历,删除首次出现的大于其后数字的元素,直至达到s个删除或数字变得单调递增。举例说明,当n=178543, s=4时,最后剩下的最小数为13。" 77198675,7285969,JSP过滤器实战:filter到servlet处理数据库操作,"['JavaWeb', 'jsp开发', '过滤器filter', 'servlet处理']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

-通过键盘输入一个高精度的正整数n(n的有效位数<=240),去掉其中任意s个数字后,剩下的数字按原左右次序将组成一个新的正整数。编程对给定的n和s,寻找一种方案,使得剩下的数字组成的新数最小。
-输入:n,s
-输出:最后剩下的最小数
-输入示例:
178543
4
-输出示例:
13

思路:
使用贪心算法,从左到右依次遍历,找到第一次出现的a(k)>a(k+1)
依次删除所有的使a(k)>a(k+1)的所有的a(k)
但要保证,删除的个数不要超过s个 and 如果没有删到s个,数字就已经单调递增,那么直接跳出循环,取该数字的前n-s位即可。

#include <iostream>
#include <string>

using namespace std;

string min_num(string str,int s){
    long len=str.size();
    int ss=s;
    //int tem=0;
    while(s><
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值