2017年3月4日18:54:05
思路:两个数组存出现次数,相加为奇数,必失败,最后还要除2
代码如下:
#include<bits/stdc++.h>
using namespace std;
int a[120],c[120];
map<int,int>A,C;
int main(){
int n;
cin>>n;
for(int i=1;i<=n;++i){
cin>>a[i];
A[a[i]]++;
}
for(int i=1;i<=n;++i){
cin>>c[i];
C[c[i]]++;
}
int ans=0;
for(int i=1;i<=5;++i){
if((A[i]+C[i])&1){
cout<<"-1"<<endl;
return 0;
}
else{
ans+=abs(A[i]-C[i])/2;
}
}
printf("%d\n",ans/2);
return 0;
}
本文介绍了一种用于判断两个数组能否通过一定操作达到完全匹配的算法。该算法首先统计两个数组中各元素的出现次数,若存在某元素总出现次数为奇数则认为无法匹配,返回-1;否则计算两数组间元素数量差异并返回最小操作次数。
532

被折叠的 条评论
为什么被折叠?



