【发布时间】:2015-05-10 02:24:11
【问题描述】:
我将图像编码为一维颜色数组(为简单起见,此处用字母表示):
[A, B, C, D,
E, F, G, H,
I, J, K, L,
M, N, O, P]
但是由于我使用的库的限制,每个图像都必须在maxElements 项目下,并且是正方形的。所以我需要做的是从该图像中提取“扇区”,这样我就可以分别迭代它们。 maxElements = 4 的示例:
[A, B, [C, D,
E, F] G, H]
[I, J, [K, L,
M, N] O, P]
如果有余数,则应将其存储在较小的数组中。 side = 3、maxElements = 4 的示例:
[A, B, C, [[A, B, [C,
D, E, F, -> D, E] F]
G, H, I] [G, H] [I]]
请注意,数组在第 3 列被剪切,因为如果它的尺寸超过 2x2,就会违反maxElements。
然而,一个额外的挑战是我无法访问此图像,直到为时已晚,但我确实拥有图像的 side(如正方形)和每个扇区的最大元素数.所以我想做的是为数组中的每个像素生成一个索引数组。
所以我有一维数组中每一行的长度和行数(都是边),我需要生成一个索引数组来获取该数组大批。 side = 4、maxElements = 4 的示例输出:
[[1, 2, 5, 6], [3, 4, 7, 8], [9, 10, 13, 14], [11, 12, 15, 16]]
也许我有太多时间不睡觉,但我无法解决这个问题。
【问题讨论】:
-
[i, i + 1, i + side, i + 1 + side]for (i = 0; i < arr.Length; i += side / 2) -
为什么在最后一个例子中,我们不能把最后一个数组分成
[C,F,I]?因为边是3,maxElements是4,所以这应该是有效的? -
@PhamTrung 那会更好,但我想它可能会更复杂?
标签: c# arrays algorithm multidimensional-array