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

更新於: 19-8-2019

214 瀏覽量

啟動您的 職業

完成課程以獲得認證

開始
廣告