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