#OJ1349 求集合之间的关系
[2011 SE|CS]C Progamming Test 5-5: 求集合之间关系
Time Limit:1000MS Memory
Limit:65536K
Total Submit:2980 Accepted:1224
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
Source
ZhaoCheng
#include
"stdio.h"
void f(int a[],int
b)//????????
{
int i;
for(i=0;i<b;i++)
scanf("%d",&a[i]);
}
void p(int a[],int
b)//????????
{
int i,r,t;
for(i=0;i<b-1;i++)
for(r=0;r<b-1-i;r++)
if(a[r]>a[r+1])
{t=a[r+1];a[r+1]=a[r];a[r]=t;}
}
int c(int N[],int M[],int
n,int m)//????????
{
int s=0,r,i;
p(N,n);
p(M,m);
for(r=0,i=0;r<m&&i<n;r++,i++)
{
if(N[i]>M[r])
return 0;
if(N[i]<M[r])
{r--;s++;}
}
if(m==n&&N[n-1]==M[m-1])
return 1;
if(m<n&&N[i-1]==M[m-1])
return 2;
else
return 0;
}
int main()
{
int N[1000],M[1000],n,m,i,a[3];
for(i=0;i<3;i++)
{
scanf("%d",&n);
f(N,n);
scanf("%d",&m);
f(M,m);
a[i]=c(N,M,n,m);//????????
}
for(i=0;i<3;i++)
{
if(a[i]==1) printf("subset\n");
if(a[i]==2) printf("realsubset\n");
if(a[i]==0||m>n)
printf("notsubset\n");
}
return 0;
}