📜  布尔数组难题

📅  最后修改于: 2021-05-25 02:54:16             🧑  作者: Mango

输入:两个具有值0和1的元素的数组arr []
输出:将两个元素都设为0。

规格:以下是要遵循的规格。

1)保证一个元素为0,但我们不知道其位置。
2)我们不能说另一个元素可以是0或1。
3)我们只能对数组元素进行补充,而不能进行其他操作,例如和,或,多,除,…。等等。
4)我们不能使用if,else和loop构造。
5)显然,我们不能直接将0赋给数组元素。

我们有几种方法可以做到这一点,因为我们可以确保始终存在一个零。感谢devendraiiit建议使用以下3种方法。

方法一

C++
#include 
using namespace std;
void changeToZero(int a[2])
{
    a[ a[1] ] = a[ !a[1] ];
}
 
// Driver code
int main()
{
    int a[] = {1, 0};
    changeToZero(a);
     
    cout<<"arr[0] = "<C
void changeToZero(int a[2])
{
a[ a[1] ] = a[ !a[1] ];
}
 
int main()
{
int a[] = {1, 0};
changeToZero(a);
 
printf(" arr[0] = %d \n", a[0]);
printf(" arr[1] = %d ", a[1]);
getchar();
return 0;
}


Java
import java.io.*;
 
class GFG{
 
public static void changeToZero(int a[])
{
    a[a[1]] = a[1 - a[1]];
}
 
// Driver code
public static void main(String args[])
{
    int[] arr;
    arr = new int[2];
    arr[0] = 1;
    arr[1] = 0;
    changeToZero(arr);
     
    System.out.println("arr[0]= " + arr[0]);
    System.out.println("arr[1]= " + arr[1]);
}
}
 
// This code is contributed by rohitsingh07052


Python3
# Python3 program for a
# boolean array puzzle
def changeToZero(a):
    a[ a[1] ] = a[ not a[1] ]
    return a
 
# Driver code
if __name__=='__main__':
    a = [1, 0]
    a = changeToZero(a);
     
    print(" arr[0] = " + str(a[0]))
    print(" arr[1] = " + str(a[1]))
 
# This code is contributed by Yash_R


C
void changeToZero(int a[2])
{
    a[ !a[0] ] = a[ !a[1] ]
}


C
void changeToZero(int a[2]){    a[ a[1] ] = a[ a[0] ]}


C
void changeToZero(int a[2]){  a[0] = a[a[0]];  a[1] = a[0];}


方法2

C

void changeToZero(int a[2])
{
    a[ !a[0] ] = a[ !a[1] ]
}