题意:给你两个序列,每个序列的数的范围是从1到5,问最少要交换多少次,使序列1与序列2相同。
这个题当时没写出来,不知道是怎么模拟的,之后看了人家的博客后才明白。。。
#include<bits/stdc++.h>
#define manx 100005
using namespace std;
int main()
{
int n,x,a[6]={0},b[6]={0};
scanf("%d",&n);
for (int i=1; i<=n; i++){
scanf("%d",&x);
a[x]++;
}
for (int i=1; i<=n; i++){
scanf("%d",&x);
b[x]++;
}
int ans=0;
for (int i=1;i<=5;i++){
if((a[i]+b[i])==0) continue;
if((a[i]+b[i])%2){
printf("-1\n");
return 0;
}
int t=abs(a[i]-b[i]);
ans+=t/2;
}
printf("%d\n",ans/2);
return 0;
}