#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#define VOIDPARAMETER 0
using namespace std;
//交集
bool Intersection(int a[], int b[], int m, int n)
{ cout<<"两集合交集:"<<"{";
for(int i = 0; i < m; i++)
{ for(int j = 0; j < n; j++)
{ if(a[i] == b[j])
{ return true;
}
}
cout<<endl;
}
//并集
void AddSets(int a[], int b[], int m, int n)
{ bool flat;
cout<<"两集合并集:"<<"{";
for(int i = 0; i < m; i++)
{ flat = true;
for(int j = 0; j < n; j++)
{ if(a[i] == b[j])
{ flat = false;
break; }
}
if(flat) cout<<a[i]<<' ';
}
for(int j = 0; j < n; j++)
{ cout<<b[j]<<' '; }
if(i>=m)
{cout<<"}";}
cout<<endl;}
int main( )
{ int n,m=1;
cin>>n;
for(m=1;m<=n;)
{ int N,M,i,j,k,flag,m1=2,n1=2;
int c[100][100]={0};
cin>>N>>" ">>M;
for(k=1;k<=M;k++)
{cin>>c[k];}
flag=1;
while(flag)
{ flag=0;
for(i=1;i<=M;i++)
if c[i]!={0}
{ for(j=i+1;j<=M;j++)
if c[j]!={0}
{ if(Intersection(c[i],c[j],m1,n1)==true)
{flag=1;
c[i]=AddSets(c[i],c[j],m1,n1);
c[j]={0};
m1=m1+1;
}
else
c[i]=c[i];
c[j]=c[j];
}
}
}
count=0;
for(i=1;i<=M;i++)
if c[i]!={0}
count++;
cout<<" 输出非空数组的个数:"<<count;
}
if(i>M)
m++;
break;
}
return 0;
}
holdtom
慕的地6264312