我试图为我的战舰计划创建一个功能,以创建所有剩余部分可能存在的所有位置的概率网格。我希望网格循环遍历整个阵列,然后检查是否此时,物体有空间放置(水平或垂直),并在它将覆盖的每个点上加一个,向我显示哪些坐标最有可能在它们上面装船。 BS_GRID_ROWS和BS_GRID_COLS这两个值都包含战舰板的大小,矩阵是我想要显示我的概率值的数组,而命中数是一个数字(对应于每艘船)大于零的数组如果是船只被击中,如果我射击和错过,则为-1,如果在该坐标处没有射击则为零。这是我到目前为止的代码。它工作但不正确它完全错过了几个方块,我知道在任何船只放置之前运行它都是不可能的。任何帮助,将不胜感激。感谢
void
probabilityGrid(int matrix[BS_GRID_ROWS][BS_GRID_COLS], int hits[BS_GRID_ROWS][BS_GRID_COLS], int shipSize)
{
bool isValid=true;
for (int row = 0; row< BS_GRID_ROWS; row++)
{
for (int col = 0; (col+shipSize) <BS_GRID_COLS; col++)
{
for (int hold = col; hold < shipSize; hold++)
{
if (hits[row][hold]!=0)
isValid=false;
}
if (isValid)
{
for (int hold = col; hold < shipSize; hold++)
{
matrix[row][hold]++;
}
}
isValid=true;
}
}
//For now I'm just working on the horizontal part of the algorithm.
}
答案 0 :(得分:1)
想象一下(或者更好地设置和运行调试器)BS_GRID_ROWS == 1
,BS_GRID_COLS == 1
和shipSize == 1
。
即使(col+shipSize) <BS_GRID_COLS
可能不是您想要的,false
条件col == 0
也是col + shipSize <= BS_GRID_COLS
,您应该将其更改为row<=BS_GRID_ROWS-shipSize-1
。
出于同样的原因,您应该将row + shipSize <= BS_GRID_ROWS
更改为{{1}}。