编程题二参考代码:
#include<bits/stdc++.h>
using namespace std;
const int N=10010;
int a[N],b[N],t,n;
int main()
{
cin>>t;
while(t--)
{
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i]; //读入a
for(int i=1;i<=n;i++)cin>>b[i]; //读入b
int da=0,db=0; //计数器赋值为0
for(int i=1;i<=n;i++)
{
if(a[i]!=b[i])
{
if(a[i])
da++; //计数a需要调整的1的个数
else
db++; //计数b需要调整的1的个数
}
}
if((da+db)%2) //判断能否成功,不成功就输出-1
{
cout<<-1<<endl;
}
else
{
int ans=da/2+db/2; //按照成对进行计算,按照一对1,调整1次来计算。
if(da%2)ans+=2; //有余数,符合调整2次的情况,增加2次。
cout<<ans<<endl; //输出最终结果。
}
}
return 0;
}