1

我有一个函数来检查一个数组是否具有三个相同字符的井字游戏数组。麻烦的是,我的逻辑有问题:

for (int i = 0; i < SIZE; i++){
    for (int j = 0; j < SIZE; j++){
        if (board[i][j] != '*'){
            if (i != j){
                if (board[i][i] == board[i][j]){
                    matches++;
                }
                else if (board[i][j] == board[j][i]){
                    matches++;
                }
                else if (board[i][j] == board[j][j]){
                    matches++;
                }
                else if (board[i][j] == board[j][i]){
                    matches++;
                }
                else {
                    matches = 0;
                }
            }
        }
    }
}

看来我可以水平和垂直检查匹配。但是,我不太清楚如何找到对角线匹配。我认为这段代码可以工作,但到目前为止还没有。

关于什么是错的任何建议?

4

1 回答 1

1

看起来像作业,所以我不会给出代码解决方案。但是当两个索引相等时()i == j,或者索引加起来比矩阵的维数(i + j == SIZE - 1

在第一种情况下,您在第一个对角线上(从左上角到右下角)。在第二种情况下,您在第二个对角线上(从右上角到左下角。)

这适用于任何大小的方阵。

于 2012-10-24T02:26:51.303 回答