本文概述
输入如下:两个元素的数组arr []的值为0和1
输出如下:将两个元素都设为0。
标准:
以下是要遵循的标准。
1)确保一个元素为0, 但我们不知道其位置。
2)我们不能说另一个元素可以是0或1。
3)我们只能对数组元素进行补充, 而不能进行其他操作, 例如和, 或, 多, 除等。等等
4)我们不能使用if, else和loop构造。
5)显然, 我们不能直接将0分配给数组元素。
我们有几种方法可以做到这一点, 因为我们可以确保始终存在一个零。感谢devendraiiit建议使用以下3种方法。
方法1
C ++
#include <bits/stdc++.h>
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] = " <<a[0]<<endl;
cout<< " arr[1] = " <<a[1];
return 0;
}
// This code is contributed by rathbhupendra
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;
}
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
方法2
void changeToZero( int a[2])
{
a[ !a[0] ] = a[ !a[1] ]
}
方法3
这种方法甚至不需要补充。
void changeToZero( int a[2])
{
a[ a[1] ] = a[ a[0] ]
}
方法4
谢谢
普尔维
建议这种方法。
void changeToZero( int a[2])
{
a[0] = a[a[0]];
a[1] = a[0];
}
可能还有更多方法。
如果你发现以上代码有误, 请写评论, 或者找到其他解决相同问题的方法。