El rango de movimiento del robot - el ganado-off

Título Descripción
suelo hay una rejilla de m filas y n columnas. Un robot se mueve desde las coordenadas de cuadrícula 0,0, cada vez solamente la izquierda, derecha, superior, inferior cuatro direcciones una célula, pero no pueden entrar en las filas y columnas coordenadas de la rejilla es mayor que la suma del número de bits k. Por ejemplo, cuando k es 18, el robot puede entrar en la caja (35, 37), porque 3 + 3 + 5 + 7 = 18. Sin embargo, no puede entrar en la caja (35, 38), porque 3 + 3 + 5 + 8 = 19. Será el robot sea capaz de alcanzar el número de celosía?
Solución:
1, búsqueda en profundidad
2, cuatro direcciones
3, similar a una pregunta sobre

class Solution {
public:
    int sum(int num)
    {
        int s = 0;
        while(num)
        {
            s += num%10;
            num /= 10;
        }
        return s;
    }
    int DFS(int threshold, int r, int c, int rows, int cols, bool*vis)
    {
        int cnt = 0;
        if(r>=0 && r<rows && c>=0 && c<cols && (sum(r)+sum(c)) <= threshold && !vis[r*cols+c])
        {
            vis[r*cols+c] = 1;
            cnt = 1 + DFS(threshold, r+1, c, rows, cols, vis)
                + DFS(threshold, r-1, c, rows, cols, vis)
                + DFS(threshold, r, c+1, rows, cols, vis)
                + DFS(threshold, r, c-1, rows, cols, vis);
        }
        return cnt;
    }
    int movingCount(int threshold, int rows, int cols)
    {
        bool* vis = new bool[rows*cols];
        memset(vis, 0, rows*cols);
        int cnt = DFS(threshold, 0, 0, rows, cols, vis);
        return cnt;
    }
};
Publicados 315 artículos originales · ganado elogios 119 · vistas 110 000 +

Supongo que te gusta

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