小明有一个数字 现在他想把 的各个数字调换位置得到一个最大的数和一个最小的数你能帮帮他吗?注:小明不希望数字的最高位是 。输入格式输入一个数 ;输出格式输出两个数分别表示调换后的最大数和最小数以空格隔开;输入样例9037输出样例9730 3079c++代码
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
string num;
cin >> num;
// 将数字转换为字符数组
vector<char> digits(num.begin(), num.end());
// 对字符数组进行排序
sort(digits.begin(), digits.end());
// 构造最大数和最小数的字符数组
vector<char> maxNum(digits);
vector<char> minNum(digits);
// 将最大数的字符数组逆序排列
reverse(maxNum.begin(), maxNum.end());
// 找到最小数的最高位不为0的数字,与最低位交换
for (int i = 0; i < minNum.size(); i++) {
if (minNum[i] != '0') {
swap(minNum[0], minNum[i]);
break;
}
}
// 输出最大数和最小数
for (char digit : maxNum) {
cout << digit;
}
cout << " ";
for (char digit : minNum) {
cout << digit;
}
return 0;
}
``
原文地址: https://www.cveoy.top/t/topic/iIbA 著作权归作者所有。请勿转载和采集!