2017-02-02 29 views
0

列數的int二維數組,所以我們只是有這需要我們投入按以下格式作爲nonogram問題的規則來閱讀一個小的實際考試。實際的算法根本不難,但我和我的夥伴們都不知道如何甚至掃描這些輸入來開始。讀取輸入與改變每個

4 4 

1 1 
1 2 3 
1 
1 

0 
2 
1 1 
2 2 

*actual 4x4 grid here* 

前兩個整數表示行數(4)和列數。 (4)所以接下來的四行代表每行的規則(第2行爲1 2 3),接下來的四行代表每列的規則(第2列爲2 2)等等。

一個學期做℃之後,我們只處理了陣列,其中每行有相同的列數,以及四個星期到這個Java模塊沒有教給我們對付這類問題都沒有。

這本來是很容易的掃描數組作爲這樣使用nextInt()和一個for循環,但沒有零大家都倒黴了這一個。

1 1 0 
1 2 3 
1 0 0 
1 0 0 

考試的結束,所有,但我真的很煩,不知道如何解決這個問題。希望你們有些見解。

+0

你是什麼意思「所以接下來的四行顯示的規則爲每行(1 2 3排2)」是什麼意思?例如,「規則」是什麼意思? –

+0

哦,我完全掩蓋了所有的情況,因爲它不是真的需要我的問題。在問題本身,我們得到了一個實際的網格,我們應該使用「規則」來檢查網格是否提供了有效的解決方案。如果您想了解更多信息,請查看谷歌上的nonograms – browncatmegazord

回答

1

在Java中,你可以有不同的長度多維數組。

試試這個:

int rows = 4; // read 
int cols = 4; // read 

int[][] arr = new int[rows][]; // notice how we do not tell the cols here 
for(int i=0,i<arr.length;i++){ 
    // read line or somehow get the numbers of the line into an array 
    String line = ... 
    String[] splitLine = line.split(" "); 
    int[] rowArr = new int[splitLine.length]; 
    for(int x=0;x<splitLine.length;x++){ 
     // assume no NumberFormatException 
     rowArr[x] = Integer.parseInt(splitLine[x]); 
    } 
    arr[i] = rowArr; 
} 

那麼你有你的陣列,4行,但只能作爲多列,你每行需要:

{{1,1},{1,2, 3},{1},{1}}

這工作,因爲在Java中,多維數組只是將數組引用數組。