本文概述
- C ++
- C
- Python3
输出如下:将两个元素都设为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];
}
可能还有更多方法。
【算法设计(如何解决布尔数组难题())】如果你发现以上代码有误, 请写评论, 或者找到其他解决相同问题的方法。
推荐阅读
- 算法设计(如何解决布尔矩阵问题(?))
- C++标准模板库(STL)介绍和指南
- JavaScript按位运算符用法指南
- 功能与非功能需求详细介绍
- 在不使用GCD的情况下查找两个以上(或数组)数字的LCM
- C中的输入输出系统调用创建,打开,关闭,读取,写入
- DNS欺骗或DNS缓存中毒简要介绍
- U盘识别不了,本文教您U盘识别不了怎样修好
- win10u盘安装,本文教您怎样用U盘安装win10