【问题描述】
从标准输入中读入两个整数集,整数集中数据无序,且可能有重复数据。当两个数据集中数据完全相同(去掉重复数据,顺序不一定相同),则两个数据集相同。编写一程序判断输入的两数据集是否相同:用1表示相同,用0表示不同。
【输入形式】
先输入第一组整数集的个数(大于等于1,小于等于20),然后输入第一组整数(以一个空格分隔);再输入第二组整数集的个数(大于等于1,小于等于20),并输入第二组整数(以一个空格分隔)。
【输出形式】
若两数据集相同,则输出1,否则输出0,然后在下一行按照从小到大的顺序输出第一个数据集中的数据(去掉重复数据,以一个空格分隔数据)。
【样例输入1】
10 100 56 7 89 -12 100 7 -1298 100 56 12 -12 7 7 56 100 -12 100 56 89 100 56 -1298
【样例输出1】
1 -1298 -12 7 56 89 100
【样例输入2】
10 56 70 -12 100 7 89 -12 100 56 1001 9 100 56 70 89 -12 100 7 12 100
【样例输出2】
0 -12 7 56 70 89 100 1001
【样例说明】
样例1中输入的两个数据集的数据去掉重复数据后完全相同(不考虑顺序),所以输出1,然后按从小到大的顺序输出第一个数据集中的数据。样例2中输入的两个数据集中的数据不相同,第一个数据集中的1001在第二个数据集中不存在,并且第二个数据集中的12在第一个数据集中也没有出现,所以先输出0,然后按从小到大的顺序输出第一个数据集中的数据
#include <stdio.h>
int main()
{
int a[20],b[20],c[20],d[20];
int i,j,m,n,t,z=0,k=0,g=0;
scanf("%d",&m);
for (i=0;i<m;i++)
scanf("%d",&a[i]);
scanf("%d",&n);
for (i=0;i<n;i++)
scanf("%d",&b[i]);
for (j=1;j<m;j++)
{
for (i=0;i<m-j;i++)
{
if (a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
}
for (i=0;i<m;i++)
if (a[i]!=a[i+1])
{
c[k]=a[i];
k++;
}
for (j=1;j<m;j++)
for (i=0;i<n-j;i++)
if (b[i]>b[i+1])
{
t=b[i];
b[i]=b[i+1];
b[i+1]=t;
}
for (i=0;i<n;i++)
if (b[i]!=b[i+1])
{
d[g]=b[i];
g++;
}
for (i=0;i<k;i++)
{
if (a[i]==b[i])
z++;
}
if (z==k&&k==g)
printf("1\n");
else
printf("0\n");
for (i=0;i<k;i++)
printf("%d ",c[i]);
return 0;
}