集合的包含
Time Limit: 1000 ms
Memory Limit: 65536 KiB
Problem Description
已知含n个元素的集合的子集A和B,用位串表示法判断是否有A⊆B。
Input
多组测试数据,每组测试数据第1行输入正整数n(1 <= n <= 100),表示集合元素个数,第2行输入位串表示法形式的集合A,第3行输入位串表示法形式的集合B。
Output
对于每组测试数据,若A⊆B则输出yes,反之则输出no。
Sample Input
10 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 10 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1
Sample Output
yes no
Hint
集合{1, 3, 5, 7, 9},位串表示法:1 0 1 0 1 0 1 0 1 0
集合{6 7, 8, 9, 10},位串表示法:0 0 0 0 0 1 1 1 1 1
集合{7, 8, 9, 10},位串表示法:0 0 0 0 0 0 1 1 1 1
Source
xry-fhf
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n, i, a[102], b[102], c, d;
while(~scanf("%d", &n))
{
c = 1;
d = 1;
for(i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
for(i = 0; i < n; i++)
{
scanf("%d", &b[i]);
}
for(i = 0; i < n; i++)
{
if(a[i] == 1 && b[i] == 0)
{
d = 0;
break;
}
}
if(d)
{
printf("yes\n");
}
else
{
printf("no\n");
}
}
return 0;
}
本文介绍了一种通过位串表示法来判断集合A是否为集合B的子集的算法实现。该算法适用于计算机科学中的离散数学问题,尤其是涉及集合运算的场景。文章提供了具体的代码示例,并通过样例输入输出展示了算法的工作原理。
995

被折叠的 条评论
为什么被折叠?



