栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 3353 Chess Board

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 3353 Chess Board

#include <iostream>#include <string>#include <cstring>#include <cstdio>#include <cmath>#include <algorithm>#include <vector>#define inf 0x7fffffff#define CL(a,b) memset(a,b,sizeof(a))#define MIN(a,b) ((a)<(b)?(a):(b))#define MAX(a,b) ((a)>(b)?(a):(b))#define M 250using namespace std;int a[M][M];int free_x[M],num;int x[M],y[M];int gauss(int equ,int var){int i,j,k,col;int max_r;num=0;CL(free_x,0);CL(x,0);for(k=0,col=0;k<equ&&col<var;k++,col++){for(i=k;i<equ;i++)if(a[i][col])break;if(i==equ){k--;continue;}if(k!=i)for(j=0;j<var+1;j++)swap(a[k][j],a[i][j]);if(k!=col) for(i=0;i<equ;i++) swap(a[i][k],a[i][col]);for(i=k+1;i<equ;i++)if(i!=k&&a[i][k]!=0)for(j=k;j<var+1;j++)a[i][j]=a[i][j]^a[k][j];}for(i=k;i<equ;i++){if(a[i][equ]!=0)return -1;}int s=(1<<(var-k)),index,cnt=0,l,ret=inf;for(i=0;i<s;i++){index=i;cnt=0;for(j=0;j<var-k;j++){x[equ-j-1]=(index&(1<<j))!=0;}for(j=k-1;j>=0;j--){int tmp=a[j][var];for(l=j+1;l<var;l++){tmp ^= a[j][l]*x[l] ;}x[j] = tmp ; }for(j=0;j<equ;j++){ cnt+=x[j],x[j]=0; }if(ret>cnt)ret=cnt;}return ret;}char str[20][20];int change[4][3][3]={{{0,1,0},{1,1,1},{0,1,0}},{{1,1,0},{1,1,1},{1,0,0}},{{0,1,1},{1,1,1},{0,1,0}},{{0,1,1},{1,1,0},{0,1,1}}};int dir[9][2]={{1,0},{1,1},{1,-1},{0,1},{0,-1},{0,0},{-1,1},{-1,-1},{-1,0}};int n,m;bool check(int x,int y){ if(x>=0&&x<n&&y>=0&&y<m) return true; return false;}void init(int x){ int i,j,k=0,l; int xx,yy; for(i=0;i<n;i++) for(j=0;j<m;j++) { for(l=0;l<9;l++) { xx=i+dir[l][0];yy=j+dir[l][1]; if(check(xx,yy)) { if(change[x][xx-i+1][yy-j+1]==1) a[xx*m+yy][i*m+j]=1; } } }}int main(){int i,j,k;while(scanf("%d%d",&n,&m)!=EOF&&(n+m)){ for(i=0;i<n;i++) scanf("%s",str[i]); int ans=inf,pat,t; for(i=0;i<4;i++) { CL(a,0); init(i); for(j=0;j<n;j++) for(k=0;k<m;k++) if(str[j][k]=='1') a[j*m+k][n*m]=1; t=gauss(n*m,n*m); if(t!=-1&&ans>t) { ans=t;pat=i; } }if(ans==inf)printf("Impossiblen");elseprintf("%d %dn",pat+1,ans); }}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/371381.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号