MT2097 小码哥爱数字

贪心思路:

1.错误思路:每次删去最大的数字。

n=1528,k=1,如果删去8,则为152;如果删去5,则为128<152。

2.正确思路:从左到右遍历字符串,如果前面的数>后面的数,则删去前面的数。

如果遍历完后没有这样的数,则删去最后一位。

3.注意:输出时也要考虑前导0;例如n=1008,k=1,应该删除1,结果为008,应该输出8。

代码:

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
string s;
int k, p;

int main()
{
    cin >> s;
    cin >> k;
    int len = s.length();
    while (k--)
    {
        for (int i = 0; i < len; i++)
        {
            if (s[i] > s[i + 1])
            {
                for (int j = i; j < len; j++)
                {
                    s[j] = s[j + 1]; // 删除第i位,后面的元素前移
                }
                len--;
                break;
            }
        }
    }
    while (p < len - 1 && s[p] == '0')
        p++; // 删除前导0
    for (int i = p; i < len; i++)
    {
        cout << s[i];
    }
    return 0;
}
相关推荐
李昊哲小课1 天前
Python 高级数据结构
开发语言·数据结构·python
愚者游世1 天前
<algorithm> 中 remove、remove_if、remove_copy、remove_copy_if 详解
c++·学习·程序人生·职场和发展·visual studio
无心水1 天前
【任务调度:框架】10、2026最新!分布式任务调度选型决策树:再也不纠结选哪个
人工智能·分布式·算法·决策树·机器学习·架构·2025博客之星
我头发还没掉光~1 天前
【C++写详细总结①】从for循环到算法初步
数据结构·c++·算法
雨落在了我的手上1 天前
C语言之数据结构初见篇(2):顺序表之通讯录的实现(续)
c语言·开发语言·数据结构
【数据删除】3481 天前
计算机复试学习笔记 Day41
笔记·学习·算法
上海锟联科技1 天前
什么是DAS分布式光纤声波传感系统?原理与应用解析
数据结构·分布式·算法·分布式光纤传感
篮l球场1 天前
LRU 缓存
算法·leetcode
blackicexs1 天前
第八周第五天
数据结构·c++·算法
程序员学习随笔1 天前
ext4 原理篇(三):日志子系统 Journal 深度剖析 —— 如何保障数据一致性?
linux·c++