Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Boolean Array Puzzle trong C

Cho mảng 2 phần tử, một là 0, phần tử kia có thể 0 hoặc 1. Đưa cả 2 về 0 với ràng buộc:

  • Chỉ dùng phép bổ sung (complement)
  • Không dùng vòng lặp, điều kiện, gán trực tiếp

Giải pháp

#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 << "a[0] = " << a[0] << "\na[1] = " << a[1];
    return 0;
}

Giải thích: Nếu a[1]=0 → a[0]=a[1]=0. Nếu a[1]=1 → a[1]=a[0]=0. Cách khác: `a[a[1]] = a[a[0]]`

Kết quả

a[0] = 0
a[1] = 0