查找连接区域

时间:2018-11-14 20:25:14

标签: c# arrays

我有一个任务:

我们有一个存储0或1的多维数据集。例如,多维数据集的元素是单元格。 给出了立方体的大小:在i的方向上为Nx,在j的方向上为Ny, 的k是Nz。我们需要将立方体放入大小为Nx * Ny * Nz的一维数组中。

数据以下一个顺序存储:首先我们更改i,然后更改j,然后更改k。 我们需要构建一个这样的多维数据集的示例,例如,我们可以选择100kk,400 * 250 * 1000

我们需要找到多维数据集的连接3D区域(如果两个单元具有1个公共面并且都存储1,则连接两个单元,并且连接区域是一组连接的单元),即 我们需要找到它们各自存储的许多区域和单元。而且计算速度很重要。完成这项任务应该需要几秒钟。

我要做的第一件事是创建一个大小为400 * 250 * 1000的1D数组,该数组存储0或1的多维数据集单元(请参阅c#中的附加代码)。这是对的吗?主要问题是我应该如何找到细胞区域?

    int Nx = 400;
    int Ny = 250;
    int Nz = 1000;
    int[] array = new int[Nx*Ny*Nz];
    Random rnd = new Random();
    for (int i = 0; i < Nx; i++) {
        for (int j = 0; j < Ny; j++) {
            for (int k = 0; k < Nz; k++) {
                array[Ny * Nz * i + Nz * j + k] = rnd.Next(2);
            }
        }
    }

我正在考虑将ArrayList用于区域和单元格。但是如何找到一个区域的细胞呢?那么如何存储它们呢?

    ArrayList<Integer> cells = new ArrayList<Integer>(); 
    ArrayList<ArrayList<Integer>> realms = new ArrayList<ArrayList<Integer>>();

0 个答案:

没有答案