用C++实现:给出一个多位数y与一个数x在y中删除x位数使y最小
以下是用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转换为字符串,然后通过一个循环,每次找到一个比右边数字大的数字,并删除它。这样就可以保证删除的数字最小。最后,删除结果中的前导零,并将结果输出
原文地址: https://www.cveoy.top/t/topic/h8pP 著作权归作者所有。请勿转载和采集!