【问题标题】:Spliting 2D array into sections将二维数组拆分为多个部分
【发布时间】:2021-08-14 02:20:33
【问题描述】:

对于我的算法和数据结构讲座中的一项任务,我需要找到一种方法将给定的二维数组拆分为多个部分。这是一个例子: 该程序在开始时获取一个整数k>0。数组大小是 [k*k]x[k*k] 对于 k=3 它会是这样的:

2  2  0  1  0  0  0  1  1  
1  0  1  2  1  0  1  0  0  
1  1  1  0  1  2  1  1  2  
2  2  2  2  2  0  0  2  0  
0  0  0  1  1  2  2  1  2  
1  2  2  1  2  0  0  0  1  
0  1  0  1  0  0  2  1  1  
2  1  0  1  0  2  2  2  2  
1  0  1  2  2  2  2  1  2  

我现在想将数组视为大小为 k*k 的部分:

2  2  0    1  0  0    0  1  1    
1  0  1    2  1  0    1  0  0    
1  1  1    0  1  2    1  1  2    

2  2  2    2  2  0    0  2  0    
0  0  0    1  1  2    2  1  2    
1  2  2    1  2  0    0  0  1    

0  1  0    1  0  0    2  1  1    
2  1  0    1  0  2    2  2  2    
1  0  1    2  2  2    2  1  2  

我现在的任务是将每个段的整数相加并将它们存储在大小为k*k 的数组中。现在,我不幸地只得到错误的输出。这个或某种具有这种功能的库有什么技巧吗?

【问题讨论】:

  • 您能发布您目前提出的解决方案吗?

标签: java arrays multidimensional-array split


【解决方案1】:
int[][] result = new int[k][k];
for (int i = 0; i < k * k; i++) {
    for (int j = 0; j < k * k; j++) {
        result[i / k][j / k] += array[i][j];
    }
}

【讨论】:

    【解决方案2】:

    这是我到目前为止的想法。我想我搞砸了循环:

    private static ArrayList<Integer> getPathZij() {
        ArrayList<Integer> list = new ArrayList<>();
        int k = (int) Math.sqrt(map.length);
        for (int v = k; v < map.length; v = v + k) {
            for (int i = v - k; i < v; i++) {
                int value = 0;
                for (int j = v - k; j < v; j++) {
                    value = value + map[i][j];
                }
                list.add(value);
            }
        }
        return list;
    }
    

    【讨论】:

      猜你喜欢
      • 2014-08-28
      • 1970-01-01
      • 1970-01-01
      • 2011-07-24
      • 2021-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-05
      相关资源
      最近更新 更多