【洛谷 P1106】删数问题 题解(贪心+字符串)

删数问题

题目描述

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

输入格式

输入两行正整数。

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

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

输出格式

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

样例 #1

样例输入 #1

复制代码
175438 
4

样例输出 #1

复制代码
13

思路

将 n 作为字符串读入,并在 n 末尾添加一个 0 ,方便比较。

如果当前数字大于等于下一个数字,则删除当前数字。

注意:结果要移除前导零再输出。


AC代码

cpp 复制代码
#include <iostream>
#define AUTHOR "HEX9CF"
using namespace std;

int main()
{
    string n;
    int k;
    cin >> n >> k;
    n += '0';
    while (k)
    {
        for (int i = 0; i < n.length() - 1; i++)
        {
            if (n[i] > n[i + 1])
            {
                string a = n.substr(0, i);
                string b = n.substr(i + 1, n.length() - i - 1);
                // cout << a << " " << b << endl;
                n = a + b;
                k--;
                break;
            }
        }
    }
    int index = n.find_first_not_of('0');
    // cout << index << endl;
    if (!~index)
    {
        index = 0;
    }
    n = n.substr(index, n.length() - index - 1);
    cout << n << endl;
    return 0;
}
相关推荐
米糕闯编程2 小时前
鱼香ros2(十二)C++话题订阅与发布
开发语言·c++·ros2·话题
一条大祥脚2 小时前
26ICPC网络赛第二场 计数|DFS|MEX|贪心
算法·深度优先·mex·icpc网络赛
aqiu1111112 小时前
【蓝桥杯 / C++】星际争霸 — 字符串逆序对与大整数自定义排序
算法
行者全栈架构师2 小时前
【鸿蒙心迹】ArkUI 列表性能实战——为什么 200 条数据页面掉到 20fps,LazyForEach 怎么救(HarmonyOS 7.x)
前端·算法·架构
一碗甜汤ᐝ2 小时前
高级算法分析与设计 | 常见 NP-Complete 问题总结
算法·np-complete·算法分析与设计·np完备问题
fj800j2 小时前
首助记账本新增「标签管理」功能:跨分类归集项目账目,一个账本管完所有事
数据结构·经验分享·笔记·学习·分布式账本
垆边人似月.2 小时前
分割数组的最大值最小化(200分 / 二分答案 + 贪心)
数据结构·算法·排序算法
CQU_JIAKE2 小时前
10.7【A】
算法
Dfreedom.3 小时前
分类算法的统一视角:从方差最大化到概率建模再到损失函数
算法·支持向量机·分类
汉克老师3 小时前
GESP2026年9月认证C++八级( 第三部分编程题(2、末班车))精讲
c++·gesp·小学生·学c++编程