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