Я пишу программу, которая находит максимальное количество путей, которые может предпринять контролер. Он начинается с плиток в стартовом ряду доски и заканчивается на плитки в конечной строке доски. Проблема в том, что я не могу понять, как сопоставить машиночитаемые метки плитки с человекочитаемыми метками плитки.Как найти начальную и конечную плитки проверки?
1 2 3 4 A B
R|B|R|B R|B|R|B
B|R|B|R B|R|B|R
R|B|R|B R|B|R|B
B|R|B|R B|R|B|R
1 2 3 4 1 2
Хотя моя программа вычисления пути, я хочу, чтобы иметь возможность видеть доску так, как это изображено на левой стороне. Однако, пока он находит конечную плитку с максимальным количеством путей, я хочу, чтобы она читала доску так, как она изображена справа. Я думаю о том, что у вас есть «половинный» массив, где каждый номер плитки хранится дважды подряд. Например, это может быть [1, 1, 2, 2] вместо [1, 2, 3, 4]. Я просто не знаю, как это реализовать. Вот часть моей программы:
// place checker on each bottom-row black space, and count paths
for (int checkerPos = 1; checkerPos < rFringe; checkerPos += 2)
{ // always starts in bottom-left-hand corner
board = resetBoard(board); // clear board for new checker
board[bottomRow][checkerPos] = 1; // put checker on starting location
// calculate # of paths from starting location to each end tile
for (int r = bottomRow - 1; r > 0; r--) // start in row above bottom, and end right before top fringe (i.e. row 0)
{
for (int c = 1; c < rFringe; c++)
board[r][c] = board[r + 1][c - 1] + board[r + 1][c + 1];
}
// find end tile with max paths
max = board[1][1]; // default max is upper-left space on checkerboard
for (int c = 2; c < rFringe; c++) // don't re-check first column and don't check fringe
{
// compare this to other top-row boxes to find one with highest value
if (board[1][c] > max)
{
max = board[1][c];
startLoc = checkerPos; // GETS WRONG VALUE
endLoc = c; // GETS WRONG VALUE
}
}
maxInfo[maxCount] = max; // add current piece's max to max array
maxInfo[maxCount + 1] = startLoc; // save start location
maxInfo[maxCount + 2] = endLoc; // save end location
maxCount += 3; // go to next empty slot in array
}
Как вы можете видеть, без пути к карте checkerPos
и c
к startLoc
и endLoc
, я не могу получить точные значения этих переменных.