以下是一个使用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中删除。最后,我们使用另一个循环来去除结果字符串中的前导零。

希望对你有帮助

有一个n位数x与一位数y输入xy输出x去掉y个数字的最小值用C++

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

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