Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

394
Vistas
No se puede entender el requisito del problema. (Problema del Proyecto Euler: 11)

Estoy tratando de resolver este problema: https://projecteuler.net/problem=11 Sin embargo, esta parte me confunde:

¿Cuál es el mayor producto de cuatro números adyacentes en la misma dirección (arriba, abajo, izquierda, derecha o diagonal) en la cuadrícula de 20×20?

¿Qué significa in the same direction y up, down, left, right or diagonally ? ¿Soy solo yo o el lenguaje es vago aquí?

esto es lo que he intentado hasta ahora:

 long int prod{0}, n{20}; for(int i{0}; i <= n; i++) { for(int j{0}; j <= n; j++) { long int a{grid[i][j]}, b{grid[i+1][j+1]}, c{grid[i+2][j+2]}, d{grid[i+3][j+3]}; if(prod < (a * b * c * d)) prod = a * b * c * d; } } return prod;

Con esta función satisfago la primera demanda pero arriba abajo izquierda derecha o en diagonal? ¿Qué significa or significa allí?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Una dirección en el contexto de una cuadrícula es el espacio geométrico cuyos puntos están todos en la misma línea.

Si tomamos un punto, entonces podemos cruzarlo con 4 líneas diferentes:

 \ | / \ | / \ | / \|/ ----*---- /|\ / | \ / | \ / | \

Entonces, ¿cómo podríamos definir estas direcciones? Hay una forma muy sencilla de hacerlo:

  • recorres las filas
    • recorres las columnas
      • en el punto actual, intenta obtener 4 valores, incluido el punto actual
        • hacia abajo
        • a la derecha
        • hacia la derecha hacia abajo
        • hacia la derecha

Digo "intentar", lo que significa que tendrá que ignorar bastantes posibilidades debido a los límites de su cuadrícula. Sin embargo, es una buena manera de obtener las cuatro direcciones:

 int bestProduct = -1; //Assuming you have positives for (int row = 0; row < n; row++) { for (int column = 0; column < n; column++) { int ignore = 0; int rowDir = 0; int colDir = 1; int product = grid[row][column]; for (int index = 0; (!ignore) && (index < 3); index++) { if ( (row + rowDir < 0) || (row + rowDir >= n) || (column + colDir < 0) || (column + colDir >= m) ) { ignore = 1; } else product *= grid[row + rowDir][column + colDir]; } if ((!ignore) && (bestProduct < product)) bestProduct = product; } }

Esta no es una implementación completa, ya que también necesita hacer algo de trabajo. Deberá continuar con:

  • convertir la parte interna del segundo ciclo en una función, excepto if condicional, que verifica si el producto es más alto que el mejor producto hasta el momento
  • elimine ese código interno y reemplácelo con la llamada de función
  • llamar a la función tres veces más, una para cada dirección
  • las otras direcciones son:
    • 1: tener 1 colDir y 0 rowDir
    • 2: tener 1 colDir y 1 rowDir
    • 3: tener 1 colDir y -1 rowDir

Sé que es más difícil considerar esta solución parcial, pero a la larga te ayudará mucho si haces el resto por ti mismo, ya que las ideas están todas establecidas aquí.

over 4 years ago · Santiago Trujillo Denunciar

0

Debe verificar cada fila, columna y diagonal de 4. Esto significa que debe verificar:

 from grid[i-4][j] to grid[i][j] from grid[i][j-4] to grid[i][j] from grid[i-4][j-4] to grid[i][j] (diagonal) from grid[i+4][j-4] to grid[i][j] (other diagonal)

Asegúrese de observar los lados de la cuadrícula también, ya que si está en el extremo izquierdo, deberá mirar hacia la derecha.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda