
题目中用到了数学中的一个基本概念——差集。
差集:记有集合A、B,A与B的差集就是在A中存在但在B中不存在的元素。
做的思路可以有先排序 , 然后在找出属于A但却不属于B中的元素 ; 也可以先找出属于A但不属于B的元素 , 然后再进行排序。
重要的事情说三遍:集合元素有互异性!集合元素有互异性!!集合元素有互异性!!!找出所求元素后要去重。
AC的代码是用先求出A-B再排序去重。
#include<iostream>
#include<algorithm>
#include<stdio.h>
#define N 301
using namespace std;
int main()
{
int a[N] , b[N] , c[N];
int m , n , cur=0 , flag=1;
while(scanf("%d%d" , &m , &n) && (m || n)) //学会的新输入 , 以wa了8次作为血淋淋的代价 (´థ౪థ)σ
{
for(int i=0; i<m; i++)
scanf("%d" , &a[i]);
for(int i=0; i<n; i++)
scanf("%d" , &b[i]);
for(int i=0; i<m; i++)
{
for(int j=0; j<n; j++)
if(a[i] == b[j]) flag=0;
if(flag) c[cur++]=a[i];
flag=1;
}
if(!cur) printf("NULL\n");
else
{
for(int i=0; i<cur-1; i++)
for(int j=i+1; j<cur; j++)
if(c[i] == c[j])
c[i]=-2147483000;
sort(c , c+cur);
for(int i=0; i<cur; i++)
if(c[i] != -2147483000)
printf("%d " , c[i]);
printf("\n");
}
cur=0;
}
return 0;
}
浙公网安备 33010602011771号