簡體   English   中英

在2D數組中找到數字的對角線?

[英]Finding Diagonal of a number in 2D array?

如果我有以下5x5矩陣,可以說

{ ,  , T ,  , }
{ , T , T , , }
{ ,  , T ,  , }
{ , T,  ,  ,  }
{T,  ,  ,  ,  }

並且我必須檢查矩陣中的char是否與另一個char對角,我以下面的方式檢查它們,

public boolean isDiagonal(int row,int col){
    if (row == board.length-1 && board[row-1][col+1] == 'T') {
        return true;
    } else if (col == board.length -1 && board[row+1][col-1] == 'T') {
        return true;
    } else if (board[row][col] == 'T' && board[row+1][col+1] == 'T' ||     
        board[row][col] == 'T' && board[row-1][col-1] == 'T') {
        return true;
    } else if (board[row][col] == 'T' && board[row-1][col+1] == 'T' || 
        board[row][col] == 'T' && board[row+1][col-1] == 'T') {     
        return true;
    }

    return false;
}

字符T在板上隨機分配。 我需要在放置char T的同時檢查是否對角存在另一個T。

該方法采用行和列,並檢查板上的字符T是否存在以及是否與另一個T對角。

如果row = 0且col = 4或row = 1且col = 5依此類推...它將失敗,並將數組超出范圍。

使對角線到矩陣中的任何數字並避免出現邊緣情況的有效方法是什么?

PS:我正在嘗試用Java編寫代碼

我將創建一個方法來獲取元素,如果坐標無效,它將返回默認值。 只需對搜索內容使用默認值即可。

public char getWithDefault(int row, int col, char default ) {
  if ((0 <= row) && ( row < board.length) &&
      (0<=col) && (col < board[row].length)) {
    return board[row][col];
  }
  return default;
}

public boolean isDiagonal(int row,int col){
  // arbitrary default value, as long as it is != 'T'
  if (getWithDefault(row,col,'1') != 'T') return false;
  if (getWithDefault(row+1,col+1,'1') == 'T') return true;
  if (getWithDefault(row+1,col-1,'1') == 'T') return true;
  if (getWithDefault(row-1,col+1,'1') == 'T') return true;
  if (getWithDefault(row-1,col-1,'1') == 'T') return true;
  return false;
}

從您的代碼中,我推導出board是一個char數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM