2 回答
TA贡献1805条经验 获得超10个赞
#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;
}// 缺少}
return false;
}
//并集
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,count;
int N,M,i,j,k,flag,m1=2,n1=2;
int c[100][100]={0};
cin>>n;
for(m=0;m<=n;)
{
cin>>N>>M;
for(i=0;i<N;i++)// 修改
{
for(k=0;k<M;k++)
{
cin>>c[i][k];
}
}
flag=1;
while(flag)
{
flag=0;
for(i=0;i<N;i++)
{
for(j=i+1;j<M;j++)
{
if (c[i][j]!=0) // 修改
{
if(Intersection(c[i],c[j],m1,n1)==true)
{
flag=1;
AddSets(c[i],c[j],m1,n1);
c[i][j]=0;
m1=m1+1;
}
//else
// c[i]=c[i];
// c[j]=c[j];
}
}
}
}
count=0;
for(i=0;i<N;i++)
{
for(j=i+1;j<M;j++)
{
if (c[i][j]!=0)
count++;
}
}
cout<<" 输出非空数组的个数:"<<count;
// if(i>M)
// m++;
// break;
// }
}
return 0;
}
添加回答
举报