jiajianhao
#include<stdio.h> int map[4][4]={ 0,1,0,0, 0,0,0,0, 0,0,0,0, 0,1,0,0}; int flag=0; int minci=99999; int qi[16]; int zhenqi[16]; void fan(int x,int y) { map[x][y]^=1; for(int i=0;i<4;i++) { map[x][i]^=1; map[i][y]^=1; } /*for(int i=0;i<4;i++) { for(int j=0;j<4;j++) { printf("%d ",map[i][j]); } printf("\n"); }printf("\n");*/ } void dfs(int step,int ci) { if(ci>minci) return; for(int i=0;i<4;i++) { for(int j=0;j<4;j++) { if(map[i][j]!=0) { flag=1; break; } } if(flag==1) break; } if(flag!=1&&minci>ci) { minci=ci; flag=0; for(int i=0;i<ci;i++) { zhenqi[i]=qi[i]; } return; } flag=0; if(step==16) { return; } fan(step/4,step%4); qi[ci]=step; dfs(step+1,ci+1); fan(step/4,step%4); dfs(step+1,ci); } int main() { dfs(0,0); printf("%d\n",minci); for(int i=0;i<minci;i++) printf("%d %d\n",zhenqi[i]/4+1,zhenqi[i]%4+1); return 0; }