C++ 验证是否一个数组是另一个数组的子集
这是一个很受欢迎的问题,但我找不到一个符合我的情况的答案 我有布尔数组,我试图看看一个数组是否是另一个数组的子集 例如:C++ 验证是否一个数组是另一个数组的子集,c++,arrays,subset,C++,Arrays,Subset,这是一个很受欢迎的问题,但我找不到一个符合我的情况的答案 我有布尔数组,我试图看看一个数组是否是另一个数组的子集 例如: 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
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
的子集
我曾尝试过从布尔值的真值创建一个整数数组,但我仍然不确定如何验证它们是否是彼此的序列(即子集)
我尝试使用这个算法
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;
}
int size=10;
for(int i=0;i下面是一个函数,用于检查数组a
是否具有b
中true
的所有索引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;
}
bool校验数组(bool a[],bool b[],int n){
for(int i=0;i下面是一个函数,用于检查数组a
是否具有b
中true
的所有索引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;
}
bool校验数组(bool a[],bool b[],int n){
对于(int i=0;i未初始化值和访问数组超出范围->未定义行为利用的两个原因。您似乎对“子集”有一些特殊的理解。严格来说,如果两个集合具有相同数量的元素,那么其中一个集合只能是另一个集合的子集,如果它们包含完全相同的元素。(实际上,严格地说,一个集合不包含两次元素)因为,您不为索引为0-3、7-9的arr1
元素、arr2
索引为1-9的元素和索引为0-4、7-9的arr3
元素分配任何值,因此在列表中迭代并检查每个值都是无意义的,因为这些元素将具有不确定的值。请定义“子集”的含义因为标准定义不合适。有4个不同的集合包含布尔元素,所以查找这些集合的所有(标准)子集没有问题。未初始化的值和访问数组超出范围->未定义行为的两个原因利用。您似乎对“子集”有一些特殊的理解严格地说,如果两个集合有相同数量的元素,那么一个集合只能是另一个集合的子集,如果它们包含完全相同的元素。(实际上,严格地说,一个集合不包含两次元素)因为,您不为索引为0-3、7-9的arr1
元素、arr2
索引为1-9的元素和索引为0-4、7-9的arr3
元素分配任何值,因此在列表中迭代并检查每个值都是无意义的,因为这些元素将具有不确定的值。请定义“子集”的含义因为标准定义不合适。有4个不同的集合有布尔元素,所以找到这些集合的所有(标准)子集没有问题。这确实是我要找的!谢谢你。这确实是我要找的!谢谢你。