在这里,我们将看到一个布尔数组难题。一个数组具有两个元素0和1。我们必须将所有元素都设为0。我们应该考虑一些规范-在数组中,一个元素为0,这是固定的,但我们不知道该元素的位置是什么
另一个元素可以是0或1
此处仅允许补码运算,不能执行其他运算
我们不能使用分支和循环语句
我们不能将0直接分配给数组元素
我们可以用不同的方式解决这个问题。其中有三个-
方法1 -
示例#include
using namespace std;
void makeZero(int arr[2]) {
arr[ arr[1] ] = arr[ !arr[1] ];
}
int main() {
int arr[] = {1, 0};
makeZero(arr);
cout<
cout<
}
输出结果arr[0] = 0
arr[1] = 0
方法2 -
示例#include
using namespace std;
void makeZero(int arr[2]) {
arr[ arr[1] ] = arr[ arr[0] ];
}
int main() {
int arr[] = {1, 0};
makeZero(arr);
cout<
cout<
}
输出结果arr[0] = 0
arr[1] = 0
方法3 -
示例#include
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<
cout<
}
输出结果arr[0] = 0
arr[1] = 0