นี่คือปริศนาแบบอิงอาร์เรย์ที่ต้องการให้คุณเปลี่ยนตัวเลขทั้งหมดของอาร์เรย์ที่มีสององค์ประกอบเป็น 0 องค์ประกอบของอาร์เรย์คือ 0 และอีกส่วนหนึ่งอาจเป็น 0 หรือไม่ก็ได้
ในการไขปริศนานี้ โปรแกรมต้องค้นหาองค์ประกอบที่ไม่ใช่ศูนย์และเปลี่ยนเป็น 0
ข้อจำกัดต่อไปนี้ที่จำเป็นสำหรับการไขปริศนาบูลีนอาเรย์ −
- การดำเนินการที่อนุญาตนั้นเป็นส่วนเสริม ไม่อนุญาตให้ดำเนินการอื่นๆ
- ไม่อนุญาตให้ใช้คำสั่งวนซ้ำและแบบมีเงื่อนไข
- ไม่อนุญาตให้มอบหมายโดยตรง
โปรแกรมแก้ปริศนาบูลีนอาร์เรย์
#include <iostream> using namespace std; void makeZero(int a[2]) { a[ a[1] ] = a[ !a[1] ]; } int main() { int a[] = {1, 0}; makeZero(a); cout<<"arr[0] = "<<a[0]<<endl; cout<<"arr[1] = "<<a[1]; return 0; }
ผลลัพธ์
arr[0] = 0 arr[1] = 0 You can use other ways too. Like this one which does not require the negation operation. a[ a[1] ] = a[ a[0] ]