以下是用C++实现的代码:

#include <iostream>
#include <string>

std::string removeDigits(int y, int x) {
    std::string yStr = std::to_string(y);
    int n = yStr.length();
    
    if (n <= x) {
        return "0";
    }
    
    // 从左到右找到第一个比右边数字大的数字,删除它
    for (int i = 0; i < x; i++) {
        int j = 0;
        while (j < yStr.length() - 1 && yStr[j] <= yStr[j+1]) {
            j++;
        }
        yStr.erase(yStr.begin() + j);
    }
    
    // 删除前导零
    int i = 0;
    while (i < yStr.length() - 1 && yStr[i] == '0') {
        i++;
    }
    yStr.erase(0, i);
    
    return yStr;
}

int main() {
    int y, x;
    std::cout << "Enter a number (y): ";
    std::cin >> y;
    std::cout << "Enter the number of digits to remove (x): ";
    std::cin >> x;
    
    std::string result = removeDigits(y, x);
    std::cout << "The smallest number after removing " << x << " digits from " << y << " is: " << result << std::endl;
    
    return 0;
}

这段代码首先将输入的多位数y转换为字符串,然后通过一个循环,每次找到一个比右边数字大的数字,并删除它。这样就可以保证删除的数字最小。最后,删除结果中的前导零,并将结果输出

用C++实现:给出一个多位数y与一个数x在y中删除x位数使y最小

原文地址: https://www.cveoy.top/t/topic/h8pP 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录