题目大意:比较两个数组包含的元素是否相同。
算法思想:
先将两个数组排序,然后分别过滤掉冗余元素,之后一一进行比较即可。
代码如下:
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int MAXN=111;
int a[MAXN];
int b[MAXN];
int c[MAXN];
int d[MAXN];
int main(){
int n;
while(cin>>n){
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
memset(d,0,sizeof(d));
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
cin>>b[i];
}
sort(a+1,a+1+n);
sort(b+1,b+1+n);
int n1=0,n2=0;
int flag=0;
for(int i=1;i<=n;i++){
if(i==1){
c[n1++]=a[i];
}
else{
if(a[i]!=a[i-1]){
c[n1++]=a[i];
}
}
}
for(int i=1;i<=n;i++){
if(i==1){
d[n2++]=b[i];
}
else{
if(b[i]!=b[i-1])
d[n2++]=b[i];
}
}
if(n2!=n1) cout<<"NO"<<endl;
else{
for(int i=0;i<n1;i++){
if(c[i]!=d[i])
{
flag=1;
break;
}
}
if(flag)cout<<"NO"<<endl;
else cout<<"YES"<<endl;
}
}
return 0;
}