int judge3(int now) { int i,j,ok; if(judge2(now)==1) { i=nx; j=ny; a[i][j]=now; if(judge2(!now)==2) { nx=i; ny=j; return 1; } else return 0; } for(i=0;i<15;i++) for(j=0;j<15;j++) if(a[i][j]<0) { a[i][j]=now; ok=judge2(!now); a[i][j]=-1; if(ok==2) { nx=i; ny=j; return 1; } } return 0; }
void chooseMode() { int mode; scanf_s("%d", &mode); switch (mode) { case 1: judge1(); break; case 2: judge2(); break; case 3: judge3(); break; case 4: findBiggest1(); break; case 5: findBiggest2(); break; case 6: findBiggest3(); break; default: break; } }
void* recvMsg(void* pv){ int fd = *(int*)pv; while(1){ sleep(1); char buf[100]; int res = recv(sockfd,buf,sizeof(buf),0); judge2(res,recv); printf("%s\n",buf); } }
int main() { int i,j,k,n,x,y,now; while(1) { scanf("%d",&n); if(n==0) break; memset(a,-1,sizeof(a)); now=1; for(i=0;i<n;i++) { scanf("%d%d%d",&x,&y,&k); if(k) now--; else now++; a[x][y]=k; } if(now!=0&&now!=1) { printf("Invalid.\n"); continue; } if(n<=5) { printf("Cannot win in 3 moves.\n"); continue; } if(judge1(now)) printf("Place %s at (%d,%d) to win in 1 move.\n",b[now],nx,ny); else if(judge2(now)==2) printf("Lose in 2 moves.\n"); else if(judge3(now)) printf("Place %s at (%d,%d) to win in 3 moves.\n",b[now],nx,ny); else printf("Cannot win in 3 moves.\n"); } return 0; }
void search( char *str) { int a[21]; int b[21]; char shit[21][20]; int n=strlen(str); int i,j,k; int where=0; int m=0; int temp=0; memset(a,0,21); memset(b,0,21); for(i=0;i<n;i++) { if(str[i]=='?') { m++;a[m]=1;b[m]=i; } if(str[i]=='*') { m++;a[m]=2;b[m]=i; } } b[0]=-1; a[0]=1; b[m+1]=n; a[m+1]=2; for(i=0;i<=m;i++) { for(j=b[i]+1;j<b[i+1];j++) { shit[i][j-b[i]-1]=str[j]; } shit[i][j-b[i]-1]=0; } for(i=0;i<entries;i++) { where=0; for(k=0;k<=m;k++) { if(n>strlen(pdic[i].entry)) break; if(a[k]==2) { where=judge2(shit[k],pdic[i].entry,where)+1; if(where==0) break; if(k==m&&(strlen(pdic[i].entry)>=where&&judge_behind(pdic[i].entry,shit[m])!=1)) break; } if(a[k]==1) { where=judge1(shit[k],pdic[i].entry,where)+1; if(where==0) break; if(k==m&&(strlen(pdic[i].entry)>=where&&judge_behind(pdic[i].entry,shit[m])!=1)) break; } } if(k==m+1) count++; } if(count==0) return ; list=(char (*)[20]) malloc(count*20); for(i=0;i<entries;i++) { where=0; for(k=0;k<=m;k++) { if(n>strlen(pdic[i].entry)) break; if(a[k]==2) { where=judge2(shit[k],pdic[i].entry,where)+1; if(where==0) break; if(k==m&&(strlen(pdic[i].entry)>=where&&judge_behind(pdic[i].entry,shit[m])!=1)) break; } if(a[k]==1) { where=judge1(shit[k],pdic[i].entry,where)+1; if(where==0) break; if(k==m&&(strlen(pdic[i].entry)>=where&&judge_behind(pdic[i].entry,shit[m])!=1)) break; } } if(k==m+1) strcpy(list[temp++],pdic[i].entry); } }