UVa 11464-Even Parity
#include"iostream"#include"algorithm"#include"vector"#include"stack"#include"queue"#include"map"#include"cstring"#include"cst
#include"iostream"
#include"algorithm"
#include"vector"
#include"stack"
#include"queue"
#include"map"
#include"cstring"
#include"cstdio"
#include"set"
#include"cmath"
using namespace std;
int a[18][18],b[18][18];
int m,n,ans,k;
int jc(int g)
{
memset(b,0,sizeof(b));
int sum=0,k,h;
for(int i=1;i<=m;i++)
{
h=g&1;
g=g>>1;
b[1][i]=h;
if(b[1][i]!=a[1][i])
if(h==1) sum++;
else return 0;
}
for(int i=2;i<=m;i++)
for(int j=1;j<=m;j++)
{
k=b[i-1][j-1]+b[i-1][j+1]+b[i-2][j];
if(k%2==1) b[i][j]=1;
else b[i][j]=0;
if(b[i][j]!=a[i][j])
if(b[i][j]==1) sum++;
else return 0;
}
if(sum<ans)ans=sum;
return 0;
}
int main()
{
int r,h=1;
scanf("%d",&r);
while(r--)
{
ans=1000000000;
scanf("%d",&m);
int x=(1<<m)-1;
for(int j=1;j<=m;j++)
for(int i=1;i<=m;i++)
{
scanf("%d",&a[j][i]);
}
for(int i=0;i<=x;i++)
jc(i);
if(ans==1000000000)ans=-1;
printf("Case %d: %d\n",h++,ans);
}
return 0;
}
更多推荐
所有评论(0)