Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
求救啊,所有所谓官方测试数据都过了。 WAAAA~~~~我这是直接二进制串枚举 #include<stdio.h> #include<stdlib.h> #include<memory.h> #include<string.h> char b[100]; void bin(int x) { int n=x; while (n>0) { if (n%2==0) strcat(b,"0");else strcat(b,"1"); n=n/2; } while (strlen(b)<16) strcat(b,"0"); } main() { char s[5][10],t[5][10],p[5],c; int i,j,k,l,m,n,x,y,f1,f2,stp,min; memset(s,0,sizeof(s)); for (i=0;i<4;i++) { for (j=0;j<4;j++) s[i][j]=getchar(); c=getchar(); } min=100000; for (i=0;i<=65536;i++) { memset(t,0,sizeof(t)); strcpy(t[0],s[0]); strcpy(t[1],s[1]); strcpy(t[2],s[2]); strcpy(t[3],s[3]); memset(b,0,sizeof(b)); bin(i); stp=0; for (j=0;j<strlen(b);j++) { if (b[j]=='1') { stp++; x=j/4;y=j%4; if (t[x][y]=='w') t[x][y]='b';else t[x][y]='w'; if (t[x-1][y]=='w' && x-1>=0) t[x-1][y]='b';else t[x-1][y]='w'; if (t[x+1][y]=='w' && x+1<4) t[x+1][y]='b';else t[x+1][y]='w'; if (t[x][y+1]=='w' && y+1<4) t[x][y+1]='b';else t[x][y+1]='w'; if (t[x][y-1]=='w' && y-1>=0) t[x][y-1]='b';else t[x][y-1]='w'; } } c=t[0][0]; f1=0; for (j=0;j<4;j++) for (k=0;k<4;k++) if (t[j][k]!=c) { f1=1;break; } if (!f1 && stp<min) min=stp; } if (min==100000) printf("Impossible\n"); else printf("%d\n",min); } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator