对具有特定约束的2D数组进行排序

时间:2019-06-15 07:52:45

标签: c++ sorting multidimensional-array

我有一个二维数组2d_array[x][y],对于特定的x,我需要选择一个具有最高值且受特定约束的y。同样数组是固定的,x范围为0-24,y范围为0-3。 X由位置矢量定义,如下所示。

这些约束是:

-如果x == 0,然后y != 0

-如果x == 4,然后y != 2

-如果x == 0-4,然后y != 3

-如果x == 20-24,然后y != 4

我尝试了类似的操作(请注意,this.x只是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++;

但是它只是保持溢出状态,因此当我尝试在下一次迭代中读取时,我只会遇到访问冲突。

0 个答案:

没有答案