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