如何检查2d数组中的字符是否多次出现?C++
我正在做一个棋盘游戏,我只是想知道如何在数组中搜索一个元素,在这个例子中,让我们把它命名为N,每次N被计数,计数器就会上升一个。如果N将一方连接到另一方,则玩家获胜。 此解决方案仅适用于数组的一行,因此在每次“i”迭代开始时计数器都会重置如何检查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 &
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,如何?顺便说一句,大多数矩阵都声明为矩阵[行][列]。尝试打印,看看布局是如何工作的。