确定2D整数数组中的连续数

时间:2015-10-03 15:10:43

标签: java arrays

我有一个不同大小的二维数组,其中高度可以取任何值。

int array[][] = new int[height][height]

假设我有一个3 x 3数组,其值为:

7 8 9

6 5 4

1 2 3

是否有可能检查1是否与2相邻,2与3相邻,3与4相邻,4与4相邻,依此类推?相邻的是它们是否垂直,水平和对角地彼此相邻。

所以基本上,有一个从1到9的链接(或最大数字 - 例如,如果董事会是4x4,然后是1到16)。

1 个答案:

答案 0 :(得分:2)

这是我能够做到的。这是一个很好的解决方案,虽然需要更多的空间。绝对不是最好的解决方案。可能需要使用数学来获得更优化的解决方案。我不擅长数学。

//assuming the height as variable - 'r'
//take an input of some element, let's assume a[0][0], taken inside a[e][e]

int f, f1, f2, arflg=0;
int arr = new int[r*r];
for(int i=0;i<r;i++){
    for(int j=0;j<r;j++){
        arr[arflg]=a[i][j];
        arflg++;
        if(a[i][j]==a[e][e]) f1 = arflg; //location of element entered on the array
        if(a[i][j]==a[e][e]-1) f2 = arflg; //location of element's predecessor on the array
    }
}
f = f2 - f1;
if(f==1){
//forward hortizontal
}elseif(f==-1){
//backward horizontal
}elseif(f==r){
//below
}elseif(f==r-1){
//below left
}elseif(f==r+1){
//below right
}elseif(f==-r){
//above
}elseif(f==(-r-1)){
//above left
}elseif(f==(-r+1){
//above right
}