我有一个二维数组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++;
但是它只是保持溢出状态,因此当我尝试在下一次迭代中读取时,我只会遇到访问冲突。