Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

243
Visualizações
Algoritmo (JS -React)

Actualmente estoy enfrentando un problema de algoritmo que no puedo resolver y realmente necesito ayuda con eso.

Aquí está el diseño general:

  • Los elementos se colocan dentro de una cuadrícula de 4x4 (desde la posición 0,0 hasta la 3,3).
  • Los elementos tienen 3 estados diferentes, " desbloqueado ", " desbloqueable " y " bloqueado ".
  • Grid inicia con la celda (0,0) como " desbloqueable ".
  • Cuando se desbloquea una celda (o se hace clic en ella), las celdas adyacentes (horizontal y verticalmente, no en diagonal ) se vuelven " desbloqueables ".
  • Las celdas deben estar conectadas al punto de inicio ( celda (0,0) ).
  • Las celdas se pueden desasignar (" bloqueadas " de nuevo).
  • Si una celda no asignada (" bloqueada ") tiene celdas " desbloqueadas " adyacentes, se vuelve " desbloqueable " y no " desbloqueada ".

Así que aquí está el problema al que me enfrento:

Digamos que tengo celdas desbloqueadas (0,0), (1,0), (2,0), (2,1).

En esta situación, no debería ser posible bloquear la celda (2,0), ya que la celda (2,1) perderá cualquier conexión que tenga con (0,0).

¿Cómo puedo implementar tal lógica que haga que las celdas no se puedan volver a bloquear, a menos que sea seguro hacerlo (las siguientes celdas aún tienen conexión con el punto de partida de alguna manera)?

Si esto requiere algún tipo de algoritmo general, no sé cómo buscarlo, así que no dude en proporcionarme su nombre para que pueda aprenderlo. No estudié informática, soy un estudiante autodidacta.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Una forma estándar de hacer esto sería tratar su cuadrícula como un gráfico (un conjunto de vértices y aristas) y verlo como un problema gráfico. Las celdas serían los vértices del gráfico, conectados por los bordes horizontales y verticales entre ellos. Haría un seguimiento de qué celdas/vértices están desbloqueados, con las celdas que bordean las celdas desbloqueadas siendo desbloqueables y todas las demás celdas bloqueadas.

Un "vértice de corte" o "punto de articulación" en un gráfico es un vértice que, si se elimina, desconectaría el gráfico. Desea asegurarse de que una celda no sea un vértice cortado entre las celdas desbloqueadas antes de permitir que se bloquee (ya que hacerlo desconectaría una parte de las celdas desbloqueadas). Puede realizar una búsqueda en profundidad primero solo sobre las celdas desbloqueadas para encontrar sus puntos de articulación y comprobar que la celda que se va a bloquear no es uno de esos puntos antes de bloquearla.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda