我有一个任务:
我们有一个存储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>>();