2012-08-22 86 views
0

我有一個二維數組,可以通過任何整數N動態創建。最初,我需要將數組中的所有值設置爲表示「未初始化」的值,我使用數字「-1」。但是,我想將這個二維數組轉換爲一維數組,並將每個值賦予等於它在新的一維數組中的索引。如何將二維數組轉換爲一維數組作爲索引?

public class Percolation { 

private int[][] id; 
private int[] array1D; 
private int blocked = -1; //a number that doesn't exist in the array 

// create N-by-N grid, with all sites blocked 
public Percolation(int N){ 

    id = new int[N][N]; 
    for (int k = 0; k < N; k++) 
    { for (int i = 0; i < N; i++) id[k][i] = blocked; } 
} 


// open site (row i, column j) if it is not already 
public void open(int i, int j){ 


} 

在open方法中,它應該將給定索引處的值更改爲1D數組中的對應索引。例如:

[-1] [-1]

[-1] [-1]

將隨後成爲:

[0] [1 ] [2] [3]

不幸的是,由於這是功課,我不確定如何分享網格大小「N」能夠創建一個索引作爲值的新的一維數組。

+1

關於你的最後一段:你用'id.length'在你的類中得到網格大小'N'。 – halex

+0

@halex哇謝謝,這正是我需要的全部 – Ci3

+0

我會讓它成爲答案,並希望你接受它:) – halex

回答

1

你在你的課中得到網格大小Nid.length

+0

我簡直不敢相信它那麼簡單!再次感謝! – Ci3

2

林不知道如果這能幫助回答你的問題,但下面的算法是用於索引代表一個二維矩陣一個維矩陣:

colSize*row+col 

其中colSize是列的最大數量。

例如下面的矩陣:

3*1+3 = 6; 

所以,你應該能夠:

[0, 1, 2, 3; 
    4, 5, 6, 7; 
    8, 9, 10, 11] 

所以訪問行1列3(即6,其索引號可以通過發現用這個公式只用列數和行數填寫你的1D矩陣

+0

謝謝本。我知道那麼多,但是我的問題是像halex提到的那樣獲得網格大小。 – Ci3

0

你也可以做類似的東西,考慮N是給定參數構造函數:

public class Percolation { 
    private int size; 
    //... 

    public Percolation(int N){ 
     size = N; 
     //...  
    } 
} 

變量的範圍是所有類。如果你把它設置爲公開的,你也可以用p.size來訪問它,其中p是一個滲透實例

相關問題