Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

หาจำนวนคู่มากที่สุดที่เป็นไปได้ด้วยการสลับหลักเพียงครั้งเดียวใน 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; 
}

ผลลัพธ์

หากรันโค้ดด้านบน จะได้ผลลัพธ์ดังนี้:

15334

สรุป

หากมีข้อสงสัยเกี่ยวกับบทช่วยสอนนี้ สามารถถามได้ในส่วนความคิดเห็น