2011-02-01 76 views
2

我正在嘗試編寫一個算法,用於在給定的部分填充的Sudoku板中找到解決方案的數量。即給出在Java中創建一個數組(?)集合

"1 6 4 0 0 0 0 0 2", 
"2 0 0 4 0 3 9 1 0", 
"0 0 5 0 8 0 4 0 7", 
"0 9 0 0 0 6 5 0 0", 
"5 0 0 1 0 2 0 0 8", 
"0 0 8 9 0 0 0 3 0", 
"8 0 9 0 4 0 2 0 0", 
"0 7 3 5 0 9 0 0 1", 
"4 0 0 0 0 0 6 7 9" 

其中0代表空白點。我想創建3個獨立的集合數組,每個數據集中的每個數據集,行和3x3平方。我正在嘗試聲明:

horizontal = new HashSet<Integer>[9]; 

其中私人HashSet []水平是早先聲明,但這不起作用。什麼是正確的聲明或者我可以不聲明一個集合的數組?

+0

[Array of Generic Interface]的可能重複(http://stackoverflow.com/questions/3975054/array-of-generic-interface) – marcog 2011-02-01 23:49:57

回答

1

問題是類型參數。你不能用Java創建通用數組。你可以刪除類型參數,它會工作,但你應該得到一個關於未經檢查的操作的警告。

0

一組數組是一種奇怪的方式來存儲數據。二維數組或二維數組的二維數組可能是一種更直觀的建模方法。可能甚至是一些自定義類(「SudokuCube」)的二維數組也會比一組數組效果更好。

1

你可以試試這個:

horizontal = new ArrayList<HashMap<Integer>>(); 

horizontal.get(1);訪問它,你可以把它以同樣的方式作爲一個正常的數組。正如@ user599152所說,你不能創建通用數組。所以你需要找出另一種方式。列表可能是你最好的選擇。