Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

388
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!