2013-05-15 31 views
0

今天我參加了計算機科學考試。在這我必須寫出許多不同的算法。他們中的大多數我都設法做到,但最初的一個問題完全讓我失望。比較二維數組中的值彼此

一個二維數組被用來存儲一個數獨遊戲的3 * 3網格中的數字。網格包含從1到9的數字。對於那些不熟悉數獨的人,您只能在3 * 3網格中使用每個數字。 該問題要求我編寫一個checkGrid()算法來比較數組中的值,以檢查是否有重複項。如果沒有找到,應輸出「成功」,如果有雙值,則應輸出「失敗」。 我該如何做到這一點?我真的沒有線索。

我花了很多時間在考試中試圖找出答案,幾乎沒有完成我的論文 - 也許你應該聽老師,當他們告訴你跳過一個你不知道的問題來再試試......

+0

http://en.wikipedia.org/wiki/Sudoku_solving_algorithms – Zutty

回答

0

有很多選擇,但我能想到的最簡單的方法是使用Set

public void checkGrid(int[][] grid) { 
    Set<Integer> set = new HashSet(); 
    for (int i = 0; i < 3; i++) { 
     for (int j = 0; j < 3; j++) { 
      if (set.contains(grid[i][j])) { 
       System.out.println("Failure"); 
       return; 
      } else { 
       set.add(grid[i][j]); 
      } 
     } 
    } 
    System.out.println("Success"); 
} 
+0

謝謝你非常。我從來沒有想到這一點。現在我知道未來... – Nino