UVA 11464(p15)----Even Parity

来源:互联网 发布:淘宝装修教程新手入门 编辑:程序博客网 时间:2024/06/06 13:22
#include<bits/stdc++.h>#define debuusing namespace std;const int maxn=20;const int INF=999999;int b[maxn][maxn];int n,a[maxn][maxn];int solve(int s){    int num=0;    memset(b,0,sizeof(b));    for(int i=0; i<n; i++)        if(s&(1<<i)) b[0][i]=1;        else if(a[0][i]==1) return INF;    for(int i=1; i<n; i++)        for(int j=0; j<n; j++)        {            int sum=0;            if(i>1) sum+=b[i-2][j];            if(j>0) sum+=b[i-1][j-1];            if(j<n-1) sum+=b[i-1][j+1];            b[i][j]=sum%2;            if(a[i][j]&&(!b[i][j])) return INF;        }    for(int i=0; i<n; i++)        for(int j=0; j<n; j++)            if(a[i][j]!=b[i][j]) num++;    return num;}int main(){#ifdef debug    freopen("in.in","r",stdin);#endif // debug    int t,cas=0;    scanf("%d",&t);    while(t--)    {        int ans=INF;        scanf("%d",&n);        for(int i=0; i<n; i++)            for(int j=0; j<n; j++)                scanf("%d",&a[i][j]);        for(int i=0; i<(1<<n); i++)            ans=min(ans,solve(i));        if(ans==INF) ans=-1;        printf("Case %d: %d\n",++cas,ans);    }    return 0;}

0 0
原创粉丝点击