Trong hướng dẫn này, chúng ta sẽ viết một chương trình tìm số chẵn lớn nhất có thể bằng một phép hoán vị (swap) các chữ số.
Các bước giải quyết
- Khởi tạo số dưới dạng chuỗi.
- Duyệt qua số cho trước:
- Tìm chữ số chẵn nhỏ hơn hoặc bằng chữ số cuối cùng.
- Dừng vòng lặp nếu tìm thấy chữ số chẵn mong muốn.
- Nếu không tồn tại chữ số chẵn, trả về số ban đầu.
- Hoán vị chữ số cuối cùng với chữ số chẵn tìm được.
- Trả về số kết quả.
Ví dụ
Dưới đây là mã nguồn C++:
#include <bits/stdc++.h>
using namespace std;
string getLargestEvenNumber(string number, int n) {
int even = INT_MAX, index;
for (int i = 0; i < n - 1; i++) {
if ((number[i] - '0') % 2 == 0) {
even = (number[i] - '0');
index = i;
}
if (even <= (number[n - 1] - '0')) {
break;
}
}
if (even == INT_MAX) {
return number;
}
swap(number[index], number[n - 1]);
return number;
}
int main() {
string number = "15433";
cout << getLargestEvenNumber(number, 5) << endl;
return 0;
}Kết quả
Nếu bạn chạy mã trên, kết quả sẽ là:
15334
Kết luận
Nếu bạn có bất kỳ thắc mắc nào về hướng dẫn này, hãy để lại bình luận bên dưới.