ให้เราพิจารณาว่าเรามีจำนวนเต็ม n ปัญหาคือต้องตรวจสอบว่าจำนวนเต็มนี้มีรูปแบบอื่นในรูปแบบไบนารีที่เทียบเท่าหรือไม่ รูปแบบอื่นหมายถึง 101010….
วิธีการมีลักษณะดังนี้:ตรวจสอบแต่ละหลักโดยใช้เลขฐานสองที่เท่ากัน และถ้าสองตัวติดกัน ให้คืนค่าเท็จ มิฉะนั้น จะเป็นจริง
ตัวอย่าง
#include <iostream> using namespace std; bool hasAlternatePattern(unsigned int n) { int previous = n % 2; n = n/2; while (n > 0) { int current = n % 2; if (current == previous) // If current bit is same as previous return false; previous = current; n = n / 2; } return true; } int main() { unsigned int number = 42; if(hasAlternatePattern(number)) cout << "Has alternating pattern"; else cout << "Has no alternating pattern"; }
ผลลัพธ์
Has alternating pattern