编写程序,读入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;吧
b[i]==a[j]并不代表b[i]不在数组a中啊
而且if(b[i]==a[j])
{
e=e+1;
break;
}
这个逻辑也不对
应该是else break;吧
#3
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;吧
b[i]==a[j]并不代表b[i]不在数组a中啊
而且if(b[i]==a[j])
{
e=e+1;
break;
}
这个逻辑也不对
应该是else break;吧
#3
LZ要的不就是证明b[i]在数组a中么?如果b数组每个元素都在a数组中,b不就是a的子集了么?
然后break我没看出逻辑上哪里错了
#4
那有高手用这样的框架帮忙做下这个题目谢谢