验证是一个数组是另一个的子集

时间:2017-05-07 09:30:30

标签: 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 = true

在此示例中,arr2不是其中任何一个的子集,但arr3arr1的子集。

我尝试过从bools的真值开始创建整数数组的一些混乱尝试,但我仍然不确定如何验证它们是否是彼此的顺序(即子集)。

我尝试使用此算法

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设为true,在arr1

中也是如此

但如果我将arr2与超集arr1进行比较,则会返回false,因为arr1[0]不是真的。

1 个答案:

答案 0 :(得分:3)

下面是检查数组a是否包含truetrue的所有索引b的函数,此处为a和{{ 1}}具有相同的大小。

b