Я пытаюсь сделать самый большой продукт среди четырех смежных номеров (целые числа) в сетке 20x20.Расчет многомерных массивов
Это то, что я до сих пор ...
/**
* The maxProduct method is used to compute the largest product across four
* consecutive integers (either horizontally, vertically, or diagonally).
*
* @param gridData - A 20x20 array containing the integer values.
* @return maxProduct - The largest product.
*/
private static int maxProduct(int[][] gridData)
{
int maxProduct = 0;
int currentProduct = 0;
// Compute the products across the columns.
for (int row = 0; row < 20; row++)
for (int column = 0; column < 17; column++)
{
currentProduct = gridData[row][column]
* gridData[row][column + 1] * gridData[row][column + 2]
* gridData[row][column + 3];
if (currentProduct > maxProduct)
{
maxProduct = currentProduct;
}
}
// Compute the products across the rows.
for (int column = 0; column < 20; column++)
for (int row = 0; row < 17; row++)
{
currentProduct = gridData[row][column]
* gridData[row + 1][column] * gridData[row + 2][column]
* gridData[row + 3][column];
if (currentProduct > maxProduct)
{
maxProduct = currentProduct;
}
}
// Compute the products across the right diagonals.
for (int column = 0; column < 17; column++)
for (int row = 0; row < 17; row++)
{
currentProduct = gridData[row][column]
* gridData[row + 1][column + 1]
* gridData[row + 2][column + 2]
* gridData[row + 3][column + 3];
if (currentProduct > maxProduct)
{
maxProduct = currentProduct;
}
}
// Compute the products across the left diagonals.
for (int column = 19; column < 3; column--)
for (int row = 0; row < 17; row++)
{
currentProduct = gridData[row][column]
* gridData[row + 1][column - 1]
* gridData[row + 2][column - 2]
* gridData[row + 3][column - 3];
if (currentProduct > maxProduct)
{
maxProduct = currentProduct;
}
}
return maxProduct;
}
Я скопировал этот код через другого одного из моих проектов (это случилось, игра Connect 4, который использовал 8x8 сетку). Очевидно, мой код для игры Connect 4 не работал. Мои левые диагонали не прошли тестовые тесты, и я уверен, что исправил проблему в этом методе.
Функциональность должна быть идентичной (для вычисления продуктов), но я не нахожу правильное значение.
Где моя логика не так?
Хех, простая ошибка. Это исправило это. Спасибо, что поймал это для меня! – Jonathan
Вы должны использовать 'column> = 3', чтобы вы также проверяли регистр для столбцов 0-3. Если вы используете 'column> 3', то последний случай будет проверять столбцы 1-4. – rgettman
Я включил это исправление, я просто забыл условный дангит. Спасибо, парни! – Jonathan