bool dfs(char** board, int boardSize, int ColSize, char * word, int r, int c, int cnt,int len){ if (r < 0 || r >= boardSize || c < 0 || c >= ColSize || board[r][c] != word[cnt]) return false; if (len-1 == cnt) return true; board[r][c] = 0; bool flag = dfs(board, boardSize, ColSize, word, r - 1, c, cnt + 1, len) || dfs(board, boardSize, ColSize, word, r + 1, c, cnt + 1, len) || dfs(board, boardSize, ColSize, word, r, c-1, cnt + 1, len) || dfs(board, boardSize, ColSize, word, r, c+1, cnt + 1, len); board[r][c] = word[cnt]; return flag; } bool exist(char** board, int boardSize, int* boardColSize, char * word){ int len = strlen(word); for (int i = 0; i < boardSize; i++) for (int j = 0; j < *boardColSize; j++) if (dfs(board, boardSize, *boardColSize, word, i, j, 0, len)) return true; return false; }