C++ 代码实现:从 n 位数中删除 y 个数字得到最小值
以下是一个使用 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 著作权归作者所有。请勿转载和采集!