首页 > 其他分享 >32. 找最小数

32. 找最小数

时间:2024-12-31 18:58:04浏览次数:7  
标签:NUM1 int 32 最小 数字 str 移除 minidx

题目描述

给一个正整数NUM1,计算出新正整数NUM2,NUM2为NUM1中移除N位数字后的结果需要使得NUM2的值最小。

输入描述

  1. 输入的第一行为一个字符串,字符串由0-9字符组成,记录正整数NUM1,NUM1长度小于32。
  2. 输入的第二行为需要移除的数字的个数,小于NUM1长度。

输出描述

输出一个数字字符串,记录最小值NUM2。

示例1

输入:
2615371
4

输出:
131

说明:

示例2

输入:

输出:

说明:


作者:code5bug
链接:找最小数 - 华为OD统一考试(E卷)_牛客网
来源:牛客网
一、问题分析

首先读题,仔细看描述中的内容,发现需求是

1.给一个正整数NUM1,计算出新正整数NUM2,NUM2为NUM1中移除N位数字后的结果,需要使得NUM2的值最小。

2.输入描述:(1)输入的第一行为一个字符串,字符串由0-9字符组成,记录正整数NUM1,NUM1长度小于32。

(2)输入的第二行为需要移除的数字的个数,小于NUM1长度

3.输出描述:输出一个数字字符串,记录最小值NUM2。

二、解题思路

1.这道题目的意思是说,给定一个正整数NUM1,和一个数字N,移除NUM1中的N位数字(N小于NUM1的长度),使得我们得到的数字NUM2是最小的

2.为了使得我们的数字NUM2最小,我们应该要保证我们移除数字之后的第一位是最小的

3.然后在前一位相同的情况下我们要保证后面的位都尽量最小

4.比如示例1中的数字2615371,我们需要移除4个数字

所以我们在26153这几个数字中,选取一个最小的,1

然后去掉这个数字前面的数字

我们的数字变成了15371,然后我们的剩余移除数字变成了2

之后我们检查537中比较小的数字,3,

移除5和7,最后剩下131就是我们能得到的最小数字了

3:28

5.所以要实现这个方法我们需要先读取字符串

char str[1000];

scanf("%s", str);

6.然后我们读取要移除的数字个数int N;

scanf("%d", &N);

7.然后对于str的前N + 1个字符我们找出最小的

int start = 0;

int len = strlen(str);

char newstr[len - N];

int idx = 0;

while(N > 0) {

int minidx = 0;

for(int i = 0; i < N + 1; i++) {

if(str[i] - '0' < str[minidx] - '0') {

minidx = i;

}

newstr[idx++] = str[minidx];

N -= minidx;

strcpy(str, str + minidx + 1);

}

strcat(newstr, str);

}

8.最后我们输出结果newstr

printf("%s", newstr);

三、具体步骤

使用的语言是C

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
    char str[1000];
    scanf("%s", str);
    int N;
    scanf("%d", &N);
    int len = strlen(str);
    char newstr[len - N];
    int idx = 0;
    while (N > 0) {
        int minidx = 0;
        for (int i = 0; i < N + 1; i++) {
            if (str[i] - '0' < str[minidx] - '0') {
                minidx = i;
            }
        }
        // printf("%s中最小的索引值是%d\n", str, minidx);
        newstr[idx++] = str[minidx];
        N -= minidx;
        strcpy(str, str + minidx + 1);
    }
    strcat(newstr, str);
    printf("%s\n", newstr);
    return 0;
}
char* removeKdigits(char* num, int k) {
    int n = strlen(num), top = 0;
    char* stk = malloc(sizeof(char) * (n + 1));
    for (int i = 0; i < n; i++) {
        while (top > 0 && stk[top] > num[i] && k) {
            top--, k--;
        }
        stk[++top] = num[i];
    }
    top -= k;

    char* ans = malloc(sizeof(char) * (n + 1));
    int ansSize = 0;
    bool isLeadingZero = true;
    for (int i = 1; i <= top; i++) {
        if (isLeadingZero && stk[i] == '0') {
            continue;
        }
        isLeadingZero = false;
        ans[ansSize++] = stk[i];
    }
    if (ansSize == 0) {
        ans[0] = '0', ans[1] = 0;
    } else {
        ans[ansSize] = 0;
    }
    return ans;
}

标签:NUM1,int,32,最小,数字,str,移除,minidx
From: https://blog.csdn.net/bingw0114/article/details/143768709

相关文章

  • 联通 路由器 创维SK-WR9551X 联通华盛VS010 组mesh 和 锐捷X32 PRO 无缝漫游
    前言联通路由器:联通创维SK-WR9551X,联通华盛VS010组mesh,并与锐捷X32PRO混合组网,开启无限漫游。1、mesh≠无缝漫游mesh是实现路由器快速组网的一种方式,通过mesh组网后可以实现无缝漫游。mesh组网的设备要求必须是同品牌的才可以。无缝漫游‌是指在无线网络中,无线终端......
  • Springboot流浪动物管理系统p2326(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,宠物分类,宠物信息,领养信息,宠物救助,宠物助养,助养捐款,助养明细,关于我们,成员申请开题报告内容一、开题依据1.研究目的及意义随着城市化进程的推进,......
  • 关于CH32V307以太网使用
    1、关于仿真在使用以太网时,不建议使用仿真功能。因为在网络协议栈内部有一个变量需要固定间隔时间去进行累加计数,若使用仿真功能,会导致这个变量停止累加计数,从而导致程序出现异常; 2、关于内部10MPHY的使用在使用内部10MPHY时,内部10MPHY的时钟由PLL3提供,且必须为60MHz......
  • 牛客 NC20032 激光炸弹 二维前缀和
    #include<bits/stdc++.h>usingnamespacestd;inta[5010][5010];intpre[5010][5010];constintN=5e3;intmain(){ intn,m; cin>>n>>m; for(inti=0;i<n;i++) { intx,y,z; cin>>x>>y>>z; a[x][y]=z; } pre[0][0......
  • CSS特效032:2025庆新春,孔明灯向上旋转飘移效果
    CSS常用示例100+专栏目录本专栏记录的是经常使用的CSS示例与技巧,主要包含CSS布局,CSS特效,CSS花边信息三部分内容。其中CSS布局主要是列出一些常用的CSS布局信息点,CSS特效主要是一些动画示例,CSS花边是描述了一些CSS相关的库、知识点、理论篇章等。因为常用所以记录、展示、......
  • dotnet最小webApi开发实践
    dotnet最小webApi开发实践软件开发过程中,经常需要写一些功能验证代码。通常是创建一个console程序来验证测试,但黑呼呼的方脑袋界面,实在是不讨人喜欢。Web开发目前已是网络世界中的主流,微软在asp.net框架大行其道之下,也整了个最小webapi项目开发向导。今天,我也拥抱一下新的开发......
  • BHQ-3 acid|cas:1338332-66-3|BHQ-3酸
    BHQ-3acid,也被称为BHQ-3羧酸或黑洞猝灭剂3羧酸,是一种具有特别暗猝灭特性的多功能有机化合物。以下是对BHQ-3acid的详细介绍:一、基本特性英文名称:BHQ-3acidCAS号:1338332-66-3分子式:C33H35N6O2+分子量:547.68外观:深紫色粉末结构式:二、化学结构BHQ-3acid的分子中含有一个......
  • CH32V203F6P6-TSSOP20测试之01
    一、收到空板今天收到嘉立创打样的CH32V203F6P6-TSSOP20测试板子,二、焊上元件赽快焊接上元件并作测试。三、上机测试插好USB线,运行WCHISPStudio,按BOOT不放,重新上电,无法进入USB下载模式,暂时查不到原因。后乱按一番,结果发现按NRST不放后重新上电,可以进入USB下载模式,这个与......
  • SSM小说租阅管理系统-计算机毕业设计源码93246
    摘 要随着互联网的快速发展,数字化阅读逐渐成为人们获取知识和娱乐的主要方式之一。为了满足读者对多样化阅读需求的需求,本文设计并实现了一款小说租阅系统。该系统基于SSM框架搭建,采用HTML编写前端页面,通过前后台分离的方式实现了读者用户、管理员和作者用户的不同功能模块......
  • [BZOJ3230] 相似子串 题解
    \(\text{[BZOJ3230]相似子串题解}\)巧妙地利用了后缀数组的一些奇妙性质。先考虑第一问。首先去处理本质不同的子串这个东西。这个东西我们显然是见过的,于是套路地建出SA求出\(\operatorname{height}\)数组。每一个子串对应的都是一个后缀的前缀。由于串都是本质不同的,那......