战舰概率网格

时间:2015-04-23 21:44:11

标签: c++ arrays nested-loops

我试图为我的战舰计划创建一个功能,以创建所有剩余部分可能存在的所有位置的概率网格。我希望网格循环遍历整个阵列,然后检查是否此时,物体有空间放置(水平或垂直),并在它将覆盖的每个点上加一个,向我显示哪些坐标最有可能在它们上面装船。 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.
}

1 个答案:

答案 0 :(得分:1)

想象一下(或者更好地设置和运行调试器)BS_GRID_ROWS == 1BS_GRID_COLS == 1shipSize == 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}}。