ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมเพื่อหาจำนวนคู่ที่มากที่สุดที่เป็นไปได้ด้วยการสลับหลักเพียงครั้งเดียว
ขั้นตอนการแก้ปัญหา
- กำหนดค่าเริ่มต้นของตัวเลขในรูปแบบสตริง
- วนลูปผ่านตัวเลขที่กำหนด
- หาหลักคู่ที่น้อยกว่าหรือเท่ากับหลักสุดท้ายของตัวเลข
- หยุดลูปเมื่อพบหลักคู่ที่ต้องการ
- ถ้าไม่มีหลักคู่ ให้คืนค่าตัวเลขเดิม
- สลับหลักสุดท้ายกับหลักคู่ที่พบในขั้นตอนก่อนหน้า
- คืนค่าตัวเลข
ตัวอย่างโค้ด
#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;
}
ผลลัพธ์
หากรันโค้ดด้านบน จะได้ผลลัพธ์ดังนี้:
15334
สรุป
หากมีข้อสงสัยเกี่ยวกับบทช่วยสอนนี้ สามารถถามได้ในส่วนความคิดเห็น