C 語言中的布林陣列難題?
這裡我們將看到一個布林陣列難題。給定一個有兩個元素 0 和 1 的陣列。我們必須使所有元素為 0。我們應該考慮以下一些規範 −
- 在陣列中一個元素為 0,它是固定的,但我們不知道該元素的位置
- 另一個元素可以是 0 或 1
- 這裡只允許補運算,不能執行其他運算
- 我們不能使用分支和迴圈語句
- 我們不能將 0 直接分配給陣列元素
我們可以透過不同的方式解決這個問題。其中有三種 −
方法 1 −
示例
#include <iostream> using namespace std; void makeZero(int arr[2]) { arr[ arr[1] ] = arr[ !arr[1] ]; } int main() { int arr[] = {1, 0}; makeZero(arr); cout<<"arr[0] = "<<arr[0]<<endl; cout<<"arr[1] = "<<arr[1]; }
輸出
arr[0] = 0 arr[1] = 0
方法 2 −
示例
#include <iostream> using namespace std; void makeZero(int arr[2]) { arr[ arr[1] ] = arr[ arr[0] ]; } int main() { int arr[] = {1, 0}; makeZero(arr); cout<<"arr[0] = "<<arr[0]<<endl; cout<<"arr[1] = "<<arr[1]; }
輸出
arr[0] = 0 arr[1] = 0
方法 3 −
示例
#include <iostream> using namespace std; void makeZero(int arr[2]) { arr[0] = arr[arr[0]]; arr[1] = arr[0]; } int main() { int arr[] = {1, 0}; makeZero(arr); cout<<"arr[0] = "<<arr[0]<<endl; cout<<"arr[1] = "<<arr[1]; }
輸出
arr[0] = 0 arr[1] = 0
廣告