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

ถัดไป ตัวเลขที่มากกว่า N โดยมีปริมาณหลัก A และ B เท่ากันใน C++


ให้ N , และ B . ค้นหาตัวเลขที่มากกว่า N ด้วยจำนวน A . เท่ากัน และ ตัวเลข มาดูตัวอย่างกัน

N = 1234
A = 2
B = 3

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

อัลกอริทึม

  • เริ่มต้น A, B และ N.

  • เขียนฟังก์ชันแบบเรียกซ้ำ

    • ตรวจสอบว่าจำนวนปัจจุบันมากกว่า N และมีจำนวนเท่ากับ A และ ตัวเลข

    • ส่งคืนหมายเลขหากตรงตามเงื่อนไขข้างต้น

    • เพิ่มตัวเลข A ลงในผลลัพธ์
    • เพิ่มตัวเลข B ให้กับผลลัพธ์
    • เรียกใช้ฟังก์ชันซ้ำๆ ด้วยจำนวนขั้นต่ำจากสองตัวข้างต้น

การนำไปใช้

ต่อไปนี้เป็นการนำอัลกอริธึมข้างต้นไปใช้ใน C++

#include <bits/stdc++.h>
using namespace std;
long getNextGreaterElement(long result, int A, int A_Count, int B, int B_Count, int N) {
   if (result > 1e11) {
      return 1e11;
   }
   if (A_Count == B_Count && result >= N) {
      return result;
   }
   return min(getNextGreaterElement(result * 10 + A, A, A_Count + 1, B, B_Count, N),       getNextGreaterElement(result * 10 + B, A, A_Count, B, B_Count + 1, N));
}
int main() {
   int N = 1234;
   int A = 2;
   int B = 3;
   cout << getNextGreaterElement(0, A, 0, B, 0, N) << endl;
   return 0;
}

ผลลัพธ์

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

2233