以下是一个使用 C++ 编写的程序,实现了输入一个 n 位数 x 和一位数 y,然后输出去掉 y 个数字后的最小值:

#include <iostream>
#include <string>

using namespace std;

string removeDigits(string x, int y) {
    if (y >= x.length()) {
        return "0";
    }
    
    for (int i = 0; i < y; i++) {
        int j = 0;
        while (j < x.length() - 1 && x[j] <= x[j + 1]) {
            j++;
        }
        x.erase(x.begin() + j);
    }
    
    int i = 0;
    while (i < x.length() - 1 && x[i] == '0') {
        i++;
    }
    
    return x.substr(i);
}

int main() {
    string x;
    int y;
    
    cout << "输入 n 位数 x:";
    cin >> x;
    
    cout << "输入一位数 y:";
    cin >> y;
    
    string result = removeDigits(x, y);
    
    cout << "去掉 ' << y << " 个数字后的最小值为:" << result << endl;
    
    return 0;
}

这个程序使用了一个辅助函数 removeDigits,它接受一个字符串 x 和一个整数 y,并返回去掉 y 个数字后的最小值。在主函数中,我们首先读取输入的 n 位数 x 和一位数 y,然后调用 removeDigits 函数得到结果,最后输出结果。

removeDigits 函数中,我们首先检查 y 是否大于等于 x 的长度,如果是的话,直接返回 "0"。然后,我们使用一个循环来去除 y 个数字。在每一次循环中,我们找到第一个满足 x[j] > x[j + 1] 的位置 j,并将该位置上的数字从字符串 x 中删除。最后,我们使用另一个循环来去除结果字符串中的前导零。

希望对你有帮助!


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

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