求集合之间的关系 有例子

时间:2022-04-07 06:41:33
Description 

编写程序,读入N,和有N个数组成的集合;再读入M,和由M个数组成的集合。然后判断第2个集合是否: 
(a)是第1个集合的子集。输出subset 
(b)是第1个集合的真子集。输出realsubset 
(c)既非(a)有非(b)。输出notsubset 

Input 

3组以下数据: 
N和N个整数,M和M个整数。0<M,N<1000

Output 

相应的判断结果

Sample Input 


10 1 2 3 4 5 6 7 8 9 10
5 1 2 3 4 5
6 1 2 3 4 5 6
6 3 1 2 5 6 4
4 1 2 3 4
3 4 5 6

Sample Output 


realsubset
subset
notsubset
 我自己做的交不上去 不知道怎么错了 希望大家找下

#include"stdio.h"
int main()
{
int N,M,e=0,a[100],b[100],i,j;
scanf("%d",&N);
for(i=0;i<N;i++)
scanf("%d",&a[i]);
scanf("%d",&M);
for(i=0;i<M;i++)
scanf("%d",&b[i]);
for(i=0;i<M;i++)
for(j=0;j<N;j++)
{
if(b[i]==a[j])
{
e=e+1;
break;
}
}
if(N>M&&M==e) printf("realsubset");
else if(N==M&&M==e) printf("subset");
else printf("notsubset ");
      
return 0;
}

4 个解决方案

#1


高技术贴子……

#2


LZ是不是考虑的简单了点?
b[i]==a[j]并不代表b[i]不在数组a中啊

而且if(b[i]==a[j])
{
e=e+1;
break;
}
这个逻辑也不对
应该是else break;吧


#3


引用 2 楼 selooloo 的回复:
LZ是不是考虑的简单了点?
b[i]==a[j]并不代表b[i]不在数组a中啊

而且if(b[i]==a[j])
{
e=e+1;
break;
}
这个逻辑也不对
应该是else break;吧

LZ要的不就是证明b[i]在数组a中么?如果b数组每个元素都在a数组中,b不就是a的子集了么?
然后break我没看出逻辑上哪里错了

#4


那有高手用这样的框架帮忙做下这个题目谢谢

#1


高技术贴子……

#2


LZ是不是考虑的简单了点?
b[i]==a[j]并不代表b[i]不在数组a中啊

而且if(b[i]==a[j])
{
e=e+1;
break;
}
这个逻辑也不对
应该是else break;吧


#3


引用 2 楼 selooloo 的回复:
LZ是不是考虑的简单了点?
b[i]==a[j]并不代表b[i]不在数组a中啊

而且if(b[i]==a[j])
{
e=e+1;
break;
}
这个逻辑也不对
应该是else break;吧

LZ要的不就是证明b[i]在数组a中么?如果b数组每个元素都在a数组中,b不就是a的子集了么?
然后break我没看出逻辑上哪里错了

#4


那有高手用这样的框架帮忙做下这个题目谢谢