Сортировка двумерного массива с конкретными ограничениями - PullRequest
0 голосов
/ 15 июня 2019

У меня есть двумерный массив 2d_array[x][y], и для конкретного x мне нужно выбрать ay с наибольшим значением, с конкретными ограничениями.Также массив является фиксированным, и диапазон х составляет 0-24, а диапазон у 0-3.X определяется вектором позиции, как показано ниже.

Эти ограничения:

-if x == 0 затем y != 0

-if x == 4 затем y != 2

-if x == 0-4 затем y != 3

-if x == 20-24 затем y != 4

Я пробовал что-то подобное (обратите внимание, что это простопроизвольное значение в диапазоне от 0 до 24):

    std::vector<float,float> position = { 4, 0};
    int x = pos.x + (5 * pos.y); //4 for test, change it for edge cases
    int bestY= 0;
    float highestReward = 2d_array[x][0];

    for (int i = 0; i < 4; i++) {
        if (2d_array[x][i] > highestReward) {
            if (((bestY == 0 && x == 0) || (bestY == 1 && x == 4)) || ((bestY == 2 && (x >= 0 && x <= 4)) || (bestY == 3 && (x >= 0 && x <= 24))) {
                bestY++;
            }
            else {
                highestReward = 2d_array[x][i];
                bestY = i;
            }
        }
    }

И затем я обновляю позицию соответственно:

 if (bestY == 0) pos.x--;
 if (bestY == 1) pos.x++;
 if (bestY == 2) pos.y--;
 if (bestY == 3) pos.y++;

Но он просто продолжает переполнять позицию, поэтому, когда я пытаюсь читать в следующей итерацииУ меня просто нарушение прав доступа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...