您的位置:首页 > 其它

两个集合的差

2016-04-03 19:00 344 查看
题目出自杭电HDU



集合的差:以属于A而不属于B的元素为元素的集合称为A与B的差集,即找出A中有的,而B中没的。

思路:

1.对输入的A,B集合进行集合内排序.

2.A的元素a1依次与B中比a小的元素比较。

3.若B中没有元素与a1相等,则累加标记变量f,并把a1输出.

4.进行a1元素的下一个元素a2与B中比a2小的元素比较。。。一直到 the last。

5.f为0,输出NULL~~~~~game over。

上代码

#include<stdio.h>
#include<stdlib.h>
int cmp(const void * a, const void * b) //从小到大排序
{
return *(int *)a - *(int *)b;
}
int main()
{
int n, m, a[128], b[128], i, j, f;
while(scanf("%d %d", &n, &m), (n || m))
{
for(i = 0; i < n; scanf("%d", &a[i++]));
for(i = 0; i < m; scanf("%d", &b[i++]));
qsort(a, n, sizeof(int), cmp);
qsort(b, n, sizeof(int), cmp);
for(f = i = j = 0; i < n; i++)
{
for(; j < m && a[i] > b[j]; j++);
if(j < m && a[i] == b[j]) continue;
printf("%d ", a[i]);
f++;
}
if(!f) printf("NULL");
putchar('\n');
}
return 0;
}


写在最后:

1. qsort函数是个好东西。

最喜欢cmp函数可以随自己的定义了⊙▽⊙

可以对一维数组,二维数组,对字符串,对结构体中某个关键字,对结构体中多个关键字,对结构体中字符串进行升(降)序排序,and计算几何中求凸包的Comp(虽然还没看懂最后一个-。-)

2. 刚学会这种写法 for(i = 0; i < n; scanf(“%d”, &a[i++]));

3. 本文参考自博客园
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: