1. 程式人生 > >ACM_求交集

ACM_求交集

CI timeout cal ont others ac代碼 數組a 排序 賦值

求交集

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 }

ACM_求交集