在这里,我们将看到一个布尔数组难题。一个数组具有两个元素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