2014-10-26 47 views
0

我遇到一個問題,當它涉及到從一個特定的點檢查連續的字符如何在所有方向上是相同的二維數組一樣。檢查,如果鄰居們都從一個特定的點

例如測試這將是:

assertEquals(2, game.getMaxSequence(0, 0, 0, 1, 'o')); 
assertEquals(1, game.getMaxSequence(0, 0, 0, 1, 'x')); 

我想出如何與起始於左上角做到這一點;然而,當涉及到一個特定的點,並增加參數,我迷路了。

下面是簽名:

getMaxSequence(int row, int column, int dr, int dc, char symbol) 

感謝您的幫助。

更新,我得到了

public int getMaxSequence(int row, int column, int dr, int dc, char symbol) { 
    int maxSequence = 0; 
    char[] rows = new char[row]; 
    char[] columns = new char[column]; 


    for(int i = 0; i < rows.length; i++){ 
     for(int j = 0; j < dc; j++){ 
      for(int k = 0; k < dr; k++){ 

     if(rows[i] == symbol && columns[i] == symbol) 
     { 
      maxSequence++;//this should test to see if the index at this 
      //row is equal to what you pass it. 
     } 
     } 
     } 

} 
    return maxSequence; 
} 

它不工作仍然有什麼建議?

+0

所以你想讓我們爲你填充方法體...?你需要什麼幫助? – Radiodef 2014-10-26 23:59:04

+0

我真的不知道該怎麼辦,任何會推動我朝着正確方向發展的東西。 – Peter 2014-10-27 00:00:53

回答

0

這是一個簡單的二維數組,如果您在查看時遇到問題。索引從0延伸到n-1,其中n是數組的長度。

[0][0]   [0][n-1] 
    ┌───┬───┬───┬───┐ 
    │ │ │ │ │ 
    ├───┼───┼───┼───┤ 
    │ │ │ │ │ 
    ├───┼───┼───┼───┤ 
    │ │ │ │ │ 
    ├───┼───┼───┼───┤ 
    │ │ │ │ │ 
    └───┴───┴───┴───┘ 
[n-1][0]   [n-1][n-1] 

我們可以挑選任意點(稱之爲p)和遞增/遞減指數(前提我們必須留下來n-10的範圍內),走在任何方向。

[x--, y--]  [y--]  [x++, y--] 
      ┌───┬───┬───┬───┐ 
      │ │ │ │ │ 
      ├───┼───┼───┼───┤ 
      │ │ │ │ │ 
    [x--] ├───┼───┼───┼───┤ [x++] 
      │ │ p │ │ │ 
      ├───┼───┼───┼───┤ 
      │ │ │ │ │ 
      └───┴───┴───┴───┘ 
[x--, y++]  [y++]  [x++, y++] 

一旦你可以想象它,這將轉化爲一個循環,很容易。

char[][] arr = ... ; 

// increments are -1, 0 or 1 
int xIncrement = ... ; 
int yIncrement = ... ; 

// starting coordinates 
int x = pX; 
int y = pY; 

while((y < arr.length) && (x < arr[y].length)) { 

    char c = arr[y][x]; 

    // do something with c 

    x += xIncrement; 
    y += yIncrement; 
} 

你可以選擇更復雜的語法(如for循環,++--等),但是這是一個很好的基本形式。

在我的圖p對應於指數[2][1]。如果我想從p[0][n-1](「右上角」),則x增量爲+1,而y增量爲-1

+0

我不知道你應該寫的方法的參數意味着什麼('dr','dc'等)。或者你的其他代碼是什麼。 ; )例如,我在代碼中看不到二維數組。如果你能更好地解釋它,我可能會進一步提供幫助。 – Radiodef 2014-10-27 01:39:11