Arrays 如何检查二维数组中的行元素
所以,我想做的是一场三连胜的比赛,到目前为止我已经成功了,但是当我要赢得比赛时,我有点挣扎,因为我需要检查一行、一列或对角线的所有元素是否相同 到目前为止,我已经通过使用一个布尔值、一个计数器和一个for循环使它工作起来。下面是我的代码的外观示例Arrays 如何检查二维数组中的行元素,arrays,if-statement,boolean,Arrays,If Statement,Boolean,所以,我想做的是一场三连胜的比赛,到目前为止我已经成功了,但是当我要赢得比赛时,我有点挣扎,因为我需要检查一行、一列或对角线的所有元素是否相同 到目前为止,我已经通过使用一个布尔值、一个计数器和一个for循环使它工作起来。下面是我的代码的外观示例 //Code to check the rows horizontally public void checkH(){ int cont1 = 0; Boolean winner1 = false; for(int i=0;i<size;i++)
//Code to check the rows horizontally
public void checkH(){
int cont1 = 0;
Boolean winner1 = false;
for(int i=0;i<size;i++){
if(a[0][i]==1 || a[1][i]==1 || a[2][i]==1){
cont1++;
if(cont1==3){
winner1 = true;
}
然后,计数器仍然会碰到三个,即使它们没有对齐。我知道我还没有在程序中详细说明这种情况,但这正是我正在努力解决的问题。我想做的是能够用循环来生成条件,这样我就不必用if语句来填充整个过程
非常感谢你们能给我的任何线索。提前谢谢 如果您发现很难在web上搜索解决方案/教程,请注意,三连胜游戏也称为tic tac toe。所以,如果你搜索“tic-tac-toe算法”,你会发现几个关于如何解决它的例子,因为这是一个比较常见的面试问题。为了方便读者 现在,对于使用for循环而不是链式if(或具有多个逻辑比较的if)的愿望,这是一个关于矩阵的行、列和对角遍历的问题。这里是的参考,这里是的另一个参考 针对您的问题,下面是一个伪代码,显示使用for检查列和行,以及使用少量if语句检查单元格值。但请注意,这只是一个例子,因为有很多有趣的方法来解决一个tic-tac-toe游戏,你可能想看看,从到
public bool checkRow(){
int i,j;
整数计数=0;
//按行访问元素
对于(i=0;i
int a[][] = {{1,0,0},
{1,1,0},
{0,0,0}};
public bool checkRow() {
int i, j;
int count = 0;
// accessing element row wise
for (i = 0; i < MAX; i++) {
for (j = 0; j < MAX; j++) {
// Considering we were checking for 1
// And array can have 0 or 1
// You can add the cell value and avoid an if
count += arr[i][j];
// if you go with arr[j][i] you will be traversing the columns and not the rows.
}
// if all cells in the row are 1, we have a winner
if(count == MAX)
return true;
}
return false
}