如何检查二维数组中的char是否出现多次? C ++

时间:2017-09-03 16:42:18

标签: c++ arrays

我正在制作棋盘游戏,我只是想知道如何搜索数组以找到一个元素(在这种情况下让它命名为N),并且每次计算N时,柜台上升一个。如果N将一侧连接到另一侧,则玩家获胜。 该解决方案仅适用于阵列的一行,因此计数器在每个阵列开始时复位。迭代。

void board::winner(int x, int y)

{
    int count = 0;

for (int i = 0; i < col; i++)
{
    count = 0;

    for (int j = 0; j < row; xaxis++)
    {
        if (arr[i][j] == 'N')
        {
            count++;
        }            
    }

    if (count == col)                  // == to col because we are testing straight lines
    {
        cout << "P2 wins!";
    }
}

1 个答案:

答案 0 :(得分:0)

  1. count的初始化移至第一个for循环之上。
  2. 在第一个if循环结束后移动for语句。
  3. void board :: winner(int x,int y)
    {
        int count = 0;

    for (int i = 0; i < col; i++)
    
    {
        for (int j = 0; j < row; xaxis++)
        {
            if (arr[i][j] == 'N')
            {
                count++;
            }            
        }
    }
    if (count == col) 
    {
        cout << "P2 wins!";
    }
    

    }

    通过在找到第一个副本后终止循环,可以使循环更有效:

    for (int i = 0; i < col; ++i)
    {
       for (int j = 0; j < row; ++j)
       {
          if (arr[i][j] == 'N')
          {
             ++count;
             if (count > 1)
             {
                break;
             }
          }
       }
       if (count > 1)
       {
          break;
       }
    }
    

    上述代码将在找到第一个副本后立即终止,因此不会搜索整个主板。