Cattle OFF - matriz camino

Título Descripción
favor diseñar una función que determina si existe una ruta que contiene todos los caracteres de una cadena de caracteres en una matriz. Una trayectoria de entramado puede comenzar desde cualquiera de la matriz, cada paso en la matriz puede ser la izquierda, derecha, arriba, abajo una cuadrícula. Si una ruta que pasa a través de una matriz de una rejilla, la ruta no puede entrar en la red. Por ejemplo Aquí Insertar imagen Descripciónla matriz que contiene la ruta "enviado con copia oculta" en una cadena, pero no contiene la matriz "abcb" camino, como una cadena de caracteres en la primera fila de la matriz b ocupar la primera segundos después de que el enrejado, no pueden volver a entrar en el camino esta rejilla.
Solución:
1, la profundidad primero buscar
2, definir una matriz de etiquetas de VIS, marca de posición visitado
buscar 3, cuatro direcciones

class Solution {
public:
    bool DFS(char* matrix, int r, int c, int rows, int cols, char* str, int len, bool* vis)
    {
        if(str[len] == '\0')
            return true;
        if(matrix[r*cols+c]==str[len] && !vis[r*cols+c])
        {
            vis[r*cols+c] = 1;
            return DFS(matrix, r+1, c, rows, cols, str, len+1, vis) || 
                DFS(matrix, r-1, c, rows, cols, str, len+1, vis) || 
                DFS(matrix, r, c+1, rows, cols, str, len+1, vis) ||
                DFS(matrix, r, c-1, rows, cols, str, len+1, vis);
            vis[r*cols+c] = 0;
        }
        return false;
    }
    
    bool hasPath(char* matrix, int rows, int cols, char* str)
    {
        bool* vis = new bool[rows*cols];
        for(int i=0; i<rows; i++)
            for(int j=0; j<cols; j++)
            {
                memset(vis, 0, rows*cols);
                if(DFS(matrix, i, j, rows, cols, str, 0, vis))
                    return true;
            }
        return false;
    }
};
Publicados 315 artículos originales · ganado elogios 119 · vistas 110 000 +

Supongo que te gusta

Origin blog.csdn.net/w144215160044/article/details/105052047
Recomendado
Clasificación