如何检查2d数组中的字符是否多次出现?C++

如何检查2d数组中的字符是否多次出现?C++,c++,arrays,C++,Arrays,我正在做一个棋盘游戏,我只是想知道如何在数组中搜索一个元素,在这个例子中,让我们把它命名为N,每次N被计数,计数器就会上升一个。如果N将一方连接到另一方,则玩家获胜。 此解决方案仅适用于数组的一行,因此在每次“i”迭代开始时计数器都会重置 void board::winner(int x, int y) { int count = 0; for (int i = 0; i < col; i++) { count = 0; for (int j = 0; j &

我正在做一个棋盘游戏,我只是想知道如何在数组中搜索一个元素,在这个例子中,让我们把它命名为N,每次N被计数,计数器就会上升一个。如果N将一方连接到另一方,则玩家获胜。 此解决方案仅适用于数组的一行,因此在每次“i”迭代开始时计数器都会重置

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!";
    }
}
将计数初始化移到第一个for循环上方。 在第一个for循环结束后移动if语句。 无效板::winnerint x,int y { 整数计数=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;
   }
}

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

您的问题是什么?如果计数>1,如何?顺便说一句,大多数矩阵都声明为矩阵[行][列]。尝试打印,看看布局是如何工作的。