题目中用到了数学中的一个基本概念——差集。

差集:记有集合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;
}
posted on 2017-12-31 19:10  23~  阅读(254)  评论(0)    收藏  举报