杭电acm2034 C语言写法每组输入数据占1行,每行数据的开始是2个整数n(0
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/02 04:57:40
![杭电acm2034 C语言写法每组输入数据占1行,每行数据的开始是2个整数n(0](/uploads/image/z/12641006-38-6.jpg?t=%E6%9D%AD%E7%94%B5acm2034+C%E8%AF%AD%E8%A8%80%E5%86%99%E6%B3%95%E6%AF%8F%E7%BB%84%E8%BE%93%E5%85%A5%E6%95%B0%E6%8D%AE%E5%8D%A01%E8%A1%8C%2C%E6%AF%8F%E8%A1%8C%E6%95%B0%E6%8D%AE%E7%9A%84%E5%BC%80%E5%A7%8B%E6%98%AF2%E4%B8%AA%E6%95%B4%E6%95%B0n%280)
杭电acm2034 C语言写法每组输入数据占1行,每行数据的开始是2个整数n(0
杭电acm2034 C语言写法
每组输入数据占1行,每行数据的开始是2个整数n(0
杭电acm2034 C语言写法每组输入数据占1行,每行数据的开始是2个整数n(0
首先对两个数组(用数组储存集合)分别排序,然后对于第一个集合中的每个元素,用二分搜索在第二个集合中查找,如果找不到,则输出,如果所有元素都能在第二个集合中被找到,则输出NULL
#include
#include
int cmp(const void *a,const void *b)
{
return(*(int *)a - *(int *)b);
}
int numeric (const void *p1,const void *p2)
{
return(*(int *)p1 - *(int *)p2);
}
int main()
{
int m,n,i;
int arr1[100],arr2[100];
while(1)
{
char flag = 0;
scanf("%d%d",&m,&n);
if(m == 0 && n == 0)break;
for(i = 0; i < m; i++)scanf("%d",&arr1[i]);
for(i = 0; i < n; i++)scanf("%d",&arr2[i]);
qsort(arr2,n,sizeof(int),cmp);
qsort(arr1,m,sizeof(int),cmp);
for(i = 0; i < m; i++)
{
if(!bsearch(&arr1[i],arr2,n,sizeof(int),numeric))
{
printf("%d ",arr1[i]);
flag = 1;
}
}
if(!flag)printf("NULL");
printf("\n");
}
return(0);
}