ACM_求交集
求交集
Time Limit: 2000/1000ms (Java/Others)
Problem Description:
输入集合A和B,按大小顺序输出A和B的交集。
Input:
输入包含多组测试数据,每组输入两个整数m,n(1<=m,n<=10^2)分别代表集合A,B的元素个数,再输入集合A,B.
Output:
按大小顺序输出A和B的交集。
Sample Input:
5 7 80 6 18 44 13 18 39 89 88 6 13 44
Sample Output:
6 13 18 44
解题思路:先对数组a和数组b按从小到大排序,然后遍历两个数组看是否有相等的元素,有的话赋值给c数组,最后统一输出,水过!!!
AC代码:
1 #include<bits/stdc++.h> 2 using namespace std; 3 int a[105],b[105],c[105]; 4 int main() 5 { 6 int n,m,p,q,k; 7 while(cin>>m>>n){ 8 for(int i=0;i<m;++i)cin>>a[i]; 9 for(int i=0;i<n;++i)cin>>b[i]; 10 sort(a,a+m);sort(b,b+n); 11 p=q=k=0; 12 while(p<m && q<n){ 13 if(a[p]==b[q]){c[k++]=a[p];p++;q++;} 14 else if(a[p]<b[q])p++; 15 else q++; 16 } 17 for(int i=0;i<k-1;++i)cout<<c[i]<<' '; 18 cout<<c[k-1]<<endl; 19 } 20 return 0; 21 }