算法设计(如何解决布尔数组难题())

本文概述

  • C ++
  • C
  • Python3
输入如下:两个元素的数组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]; }

可能还有更多方法。
【算法设计(如何解决布尔数组难题())】如果你发现以上代码有误, 请写评论, 或者找到其他解决相同问题的方法。

    推荐阅读