输入:两个具有值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] ]
}