ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมเพื่อหาเลข Boom ลำดับที่ k
ตัวเลขที่ประกอบด้วยเลข 2 และ 3 เท่านั้น จะเรียกว่า Boom number
ขั้นตอนการแก้ปัญหา
- กำหนดค่าเริ่มต้นของ k
- กำหนดคิวของสตริง
- เพิ่มสตริงว่างเข้าไปในคิว
- กำหนดตัวแปรนับเริ่มต้นเป็น 0
- เขียนลูปที่วนจนกว่าตัวนับจะมากกว่าหรือเท่ากับ k ที่กำหนด
- ดึงค่าหน้าคิว
- Pop องค์ประกอบออกจากคิว
- เก็บค่าหน้าคิวไว้ในตัวแปร
- เพิ่มตัวเลขต่อท้าย 2 เข้าไปในคิว
- เพิ่มตัวนับและตรวจสอบว่า k เท่ากับตัวนับหรือไม่
- ถ้าตัวนับเท่ากับ k ให้พิมพ์ค่าและ break
- เพิ่มตัวเลขต่อท้าย 3 เข้าไปในคิว
- เพิ่มตัวนับและตรวจสอบว่า k เท่ากับตัวนับหรือไม่
- เพิ่มตัวนับและตรวจสอบว่า k เท่ากับตัวนับหรือไม่
ตัวอย่างโค้ด
#include<bits/stdc++.h>
using namespace std;
void findKthBoomNumber(long long k) {
queue<string> queue;
queue.push("");
long long count = 0;
while (count <= k) {
string numberOne = queue.front();
queue.pop();
string numberTwo = numberOne;
queue.push(numberOne.append("2"));
count++;
if (count == k) {
cout << numberOne << endl;
break;
}
queue.push(numberTwo.append("3"));
count++;
if (count == k) {
cout << numberTwo << endl;
break;
}
}
}
int main() {
long long k = 45;
findKthBoomNumber(k);
return 0;
}
ผลลัพธ์
หากรันโค้ดด้านบน จะได้ผลลัพธ์ดังนี้:
23332
สรุป
หากมีข้อสงสัยเกี่ยวกับบทช่วยสอนนี้ สามารถถามได้ในส่วนความคิดเห็น