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

จำนวนที่ใหญ่ที่สุดที่อนุญาตให้มีการสลับหนึ่งครั้งใน C++


ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมที่หาจำนวนที่มากที่สุดด้วยการสลับเพียงครั้งเดียว

มาดูขั้นตอนการแก้ปัญหากัน

  • เริ่มต้นหมายเลข n.
  • แปลงจำนวนเต็มเป็นสตริง
  • เขียนลูปที่วนซ้ำจากจุดสิ้นสุดของสตริง
    • ค้นหาตัวเลขและดัชนีสูงสุด
    • หากตัวเลขปัจจุบันน้อยกว่าตัวเลขสูงสุด ให้อัปเดตดัชนีเริ่มต้นด้วยดัชนีปัจจุบันและดัชนีสิ้นสุดด้วยดัชนีตัวเลขสูงสุด
  • หากดัชนีเริ่มต้นเป็น -1 ให้คืนค่า n
  • หรือสลับตัวเลขในดัชนีเริ่มต้นและสิ้นสุด
  • คืนค่าจำนวนเต็มโดยการแปลง

ตัวอย่าง

มาดูโค้ดกันเลย

#include <bits/stdc++.h>
using namespace std;
int getLargestNumber(int n) {
   int maxDigit = -1;
   int maxDigitIndex = -1;
   int startIndex = -1;
   int endIndex = -1;
   string nInStr = to_string(n);
   for (int i = nInStr.size() - 1; i >= 0; i--) {
      if (nInStr[i] > maxDigit) {
         maxDigit = nInStr[i];
         maxDigitIndex = i;
         continue;
      }
      if (nInStr[i] < maxDigit) {
         startIndex = i;
         endIndex = maxDigitIndex;
      }
   }
   if (startIndex == -1) {
      return n;
   }
   swap(nInStr[startIndex], nInStr[endIndex]);
   return stoi(nInStr);
}
int main() {
   int n = 678;
   cout << getLargestNumber(n) << endl;
   return 0;
}

ผลลัพธ์

หากคุณเรียกใช้โค้ดด้านบน คุณจะได้ผลลัพธ์ดังต่อไปนี้

876

บทสรุป

หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น