有一个n位数x与一位数y输入xy输出x去掉y个数字的最小值用C++
以下是一个使用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/h8se 著作权归作者所有。请勿转载和采集!