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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP