- int pi,pj;
- //static int r[100][100];
- void f(char** board,int n ,int m,int x,int y,char * word,int p,int **r, int *rz){
-
- int a[4][2]={{0,-1},{-1,0},{0,1},{1,0}};
- // printf(" %d ",r[x][y]);
- int nx,ny;
- int i,j;
- int cc=0;
- int l=0;
- int zx,zy;
-
- //printf("%d ",r);
- // r[x][y]=1;
- //printf(" --p %d %d ",p,rz);
- if(m>=3)r[0][3]=0;
- //printf("%d %c ",r[0][3],word[p]);
- for(i=0;i<4;i++){
-
- nx=a[i][0]+x;
- ny=a[i][1]+y;
- // if(nx==2)printf(" --nx ny %d %d %c",nx,ny,word[p]);
- if(nx>=0&&nx<=n&&ny>=0&&ny<=m){
-
-
- if(r[nx][ny]>=1 &&r[nx][ny]<=p*2&&board[nx][ny]==word[p-1]){
- r[nx][ny]++;
-
-
- // printf("%d %d ",nx,ny);
- f(board,n,m,nx,ny,word,p,r,rz);
- // f(board,n,m,pi,pj,word,p,r,rz);
- // f(board,n,m,0,0,word,p,r,rz);
-
- }
-
-
- if(r[nx][ny]==0){
- // printf("ddf sa ");
-
- if(board[nx][ny]==word[p]){
- for(j=0;j<4&&j!=i;j++){
-
- zx=a[i][0]+x;
- zy=a[i][1]+y;
- if(board[zx][zy]==word[p]) {
- // printf("&& %c %d %d ",word[p],zx,zy);
- r[zx][zy]=0;
- // if(zx==0&&zy==3)
- // printf("r %d %d %d ",r[zx][zy],zx,zy);
- }
-
- }
-
-
- // printf(" nx ny %d %d %c",nx,ny,word[p]);
- // p++;
- // cc++;
- // printf("-- %c",word[p]);
- r[nx][ny]=1;
- printf("r %d %d %d %d ",r[nx][ny],nx,ny);
- f(board,n,m,nx,ny,word,p+1,r,rz);
- }
-
-
- }
-
-
-
- }
- }
- // printf(" --p %d %d ",p,rz);
- // if(cc==0){r[x][y]=0;}
- if(word[p]=='\0') {
- // printf(" **p %d %d",p,rz);
- *rz=1;}
- //
- // return true;
-
- }
-
- bool exist(char** board, int boardSize, int* boardColSize, char * word){
-
- int i,j;
- int n=boardSize-1;
- int m=boardColSize[0]-1;
- int p=1;
- int x=0,y=0;
- int row;
- int z,w;
- int rz=0;
-
- // r[x][y]=1;
-
- // printf("-- %d ",rz);
- int **r = (int **)malloc(sizeof(int*) *boardSize );
- for(row = 0 ; row < boardSize; row++)
- {
- r[row] = (int *)malloc(sizeof(int) * boardColSize[0]);
- memset(r[row],0,sizeof(int) * boardColSize[0]);
- }
-
- // printf("%d %d ",n,m);
-
- for(i=0;i<=n;i++){
- for(j=0;j<=m;j++){
- // printf("%c ",board[i][j]);
-
- if(board[i][j]==word[0]){
-
- for(z=0;z<=n;z++){
- for(w=0;w<=m;w++){
- r[z][w]=0;
- // printf("%c ",board[i][j]);
- }
- }
- r[i][j]=1;
- pi=i;
- pj=j;
- f(board,n,m,i,j,word,p,r,&rz);
-
-
-
-
-
-
- }
- }
- }
- // printf(" zz %d ",rz);
- if(rz==1)return true;
- else return false;
- }