这是一个热门问题,但我找不到满足我的情况的答案。
我有 bool 数组,我试图在其中查看一个数组是否是另一个数组的子集。
例子:
const int size = 10;
bool arr1[size];
bool arr2[size];
bool arr3[size];
assume the arrays have been initialized to false except for the following:
arr1 4,5,6 = true
arr2 0 = true
arr3 4,5 = true
在这个例子中,arr2
不是两者的子集,但是 arr3
是 arr1
的子集。
我尝试了一些从 bool 的真实值创建整数数组的困惑尝试,但我仍然不确定如何验证它们是否按顺序排列(即子集)。
我尝试使用这个算法
int size = 10;
for (int i = 0; i<size; i++)
{
for (int j = 0; j<size; j++)
{
if(arr2[i] == arr1[j])
break;
}
if (j == size)
return false;
}
return true;
}
这个也没用。
目标是确定一个数组是否包含另一个数组的所有元素。
在这种情况下,arr3
的索引 4 和 5 为真,在 arr1
但如果我将 arr2
与超集 arr1
进行比较,它将返回 false,因为 arr1[0]
不是 true。
最佳答案
下面是检查数组 a
是否包含 true
b
中的所有索引 true
的函数或者不是,这里的 a
和 b
大小相同。
bool checkArrays(bool a[], bool b[], int n) {
for(int i=0; i<n; i++) {
if(b[i] && b[i] != a[i]) // compare only if b[i] is true
return false;
}
return true;
}
关于c++ - 验证是一个数组是另一个数组的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43829923/