問題描述 :
A和B是兩個集合,A-B求的是兩個集合的差,就是做集合的減法運算。(當然,大家都知道集合的定義,就是同一個集合中不會有兩個相同的元素,這裏還是提醒大家一下)呵呵,很簡單吧?
輸入說明 :
輸入數據包含T個測試實例。
首先輸入數字T,然後輸入T組測試數據,每組輸入數據佔1行,每行數據的開始是2個整數n(0<=n<=100)和m(0<=m<=100),分別表示集合A和集合B的元素個數,然後緊跟着n+m個元素,前面n個元素屬於集合A,其餘的屬於集合B. 每個元素爲不超出int範圍的整數,元素之間由一個空格隔開.
輸出說明 :
針對每組數據輸出一行數據,表示A-B的結果,如果結果爲空集合,則輸出“NULL”,否則從小到大輸出結果,爲了簡化問題,每個元素後面跟一個空格.
輸入範例 :
2
3 3 1 2 3 1 4 7
3 7 2 5 8 2 3 4 5 6 7 8
輸出範例 :
2 3
NULL
c源碼:
#include<stdio.h>
#include<memory.h>
int main()
{
int T,n,m,a[110],b[110],i,j,t,k,z;
scanf("%d",&T);
while(T)
{ memset(a,0,110);
memset(b,0,110);
scanf("%d%d",&n,&m);
for(j=0;j<n;j++)
scanf("%d",&a[j]);
for(t=0;t<m;t++)
scanf("%d",&b[t]);
if(n<=0)
printf("NULL\n");
else
{ t=0;
for(j=1;j<n;j++)
{
for(k=0;k<=t;k++)
if(a[j]==a[k])
break;
if(k>t)
{
t++;
a[t]=a[j];
}
}
n=t+1;
t=0;
for(j=1;j<m;j++)
{
for(k=0;k<=t;k++)
if(b[j]==b[k])
break;
if(k>t)
{
t++;
b[t]=b[j];
}
}
m=t+1;
t=0;
for(i=0;i<n;i++)
{ z=0;
for(j=0;j<m;j++)
if(a[i]==b[j])
{ z=1;
break;
}
if(z==0)
{
a[t]=a[i];
t++;
}
}
if(t==0)
printf("NULL\n");
else
{
for(i=0;i<t;i++)
for(j=0;j<t-i-1;j++)
if(a[j]>a[j+1])
{
z=a[j];a[j]=a[j+1];a[j+1]=z;
}
for(i=0;i<t-1;i++)
printf("%d ",a[i]);
printf("%d \n",a[t-1]);
}
}
T--;
}//T
return 0;
}