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 |
枚举一列就可以了,其他的都可以唯一确定,到最后一行再判断下是否可行就完成#include <stdio.h> int main() { int cases; scanf("%d", &cases); for(int ii = 0; ii < cases; ii++){ printf("PUZZLE #%d\n", ii+1); int init[5][6]; for(int i = 0; i < 5; i++) for(int j = 0; j < 6; j++) scanf("%d", &init[i][j]); int res[5][6]; for(int st = 0; st < 32; st++){ for(int i = 0; i < 5; i++){ res[i][0] = ((st & (1<<i)) != 0); } res[0][1] = (res[0][0]+res[1][0]+init[0][0])%2; res[1][1] = (res[0][0]+res[1][0]+res[2][0]+init[1][0])%2; res[2][1] = (res[1][0]+res[2][0]+res[3][0]+init[2][0])%2; res[3][1] = (res[2][0]+res[3][0]+res[4][0]+init[3][0])%2; res[4][1] = (res[3][0]+res[4][0]+init[4][0])%2; for(int i = 1; i < 5; i++){ res[0][i+1] = (res[0][i]+res[0][i-1]+res[1][i]+init[0][i])%2; res[1][i+1] = (res[1][i]+res[1][i-1]+res[0][i]+res[2][i]+init[1][i])%2; res[2][i+1] = (res[2][i]+res[2][i-1]+res[1][i]+res[3][i]+init[2][i])%2; res[3][i+1] = (res[3][i]+res[3][i-1]+res[2][i]+res[4][i]+init[3][i])%2; res[4][i+1] = (res[4][i]+res[4][i-1]+res[3][i]+init[4][i])%2; } bool ok0, ok1, ok2, ok3, ok4; ok0 = (res[0][4]+res[0][5]+res[1][5]+init[0][5])%2==0; ok1 = (res[1][4]+res[0][5]+res[1][5]+res[2][5]+init[1][5])%2==0; ok2 = (res[2][4]+res[1][5]+res[2][5]+res[3][5]+init[2][5])%2==0; ok3 = (res[3][4]+res[2][5]+res[3][5]+res[4][5]+init[3][5])%2==0; ok4 = (res[4][4]+res[3][5]+res[4][5]+init[4][5])%2==0; if(ok0 && ok1 && ok2 && ok3 && ok4){ for(int i = 0; i < 5; i++){ for(int j = 0; j < 6; j++){ printf("%d", res[i][j]); if(j != 5) printf(" "); } printf("\n"); } break; } } } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator