[提高篇] 多维数组(含题目)

在 C++ 中,除了二维数组,还有三维及更高维度的数组。

三维数组

三维数组可以想象为一堆二维数组按照第三个维度排列。

定义三维数组的语法如下:

data_type array_name[depth][rows][columns];

例如:

int threeDArr[2][3][4];

这表示创建了一个深度为 2,每层有 3 行 4 列的三维整型数组。

初始化三维数组

可以在定义时进行初始化,比如:

int threeDArr[2][3][4] = {{{1, 2, 3, 4},{5, 6, 7, 8},{9, 10, 11, 12}},{{13, 14, 15, 16},{17, 18, 19, 20},{21, 22,23, 24}}};

或者:

int threeDArr[2][3][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24};

访问和修改三维数组中的元素

通过下标来访问和修改元素,例如:

threeDArr[0][1][2] = 55; 

遍历三维数组

通常使用嵌套的循环来遍历,示例如下:

for (int i = 0; i < 2; i++) {
    for (int j = 0; j < 3; j++) {
        for (int k = 0; k < 4; k++) {
            cout << threeDArr[i][j][k] << " ";
        }
        cout << endl;
    }
    cout << endl;
}

更高维数组

原理与三维数组类似,只是维度增加。例如四维数组:

data_type array_name[dim1][dim2][dim3][dim4];

随着维度的增加,数组的复杂性也会增加,在实际使用中需要谨慎处理,确保正确地管理内存和操作数组元素。
\Huge\color{red}你们最爱的题来了,嘻嘻嘻,❤️

题目 2894:肿瘤检测

时间限制: 2s 内存限制: 192MB

题目描述

一张CT扫描的灰度图像可以用一个N*N(0 < N <= 100)的矩阵描述,矩阵上的每个点对应一个灰度值(整数),其取值范围是0-255。我们假设给定的图像中有且只有一个肿瘤。在图上监测肿瘤的方法如下:如果某个点对应的灰度值小于等于50,则这个点在肿瘤上,否则不在肿瘤上。我们把在肿瘤上的点的数目加起来,就得到了肿瘤在图上的面积。任何在肿瘤上的点,如果它是图像的边界或者它的上下左右四个相邻点中至少有一个是非肿瘤上的点,则该点称为肿瘤的边界点。肿瘤的边界点的个数称为肿瘤的周长。现在给定一个图像,要求计算其中的肿瘤的面积和周长。

输入格式

输入第一行包含一个正整数N(0 < N <= 100),表示图像的大小;接下来N行,每行包含图像的一行。图像的一行用N个整数表示(所有整数大于等于0,小于等于255),两个整数之间用一个空格隔开。

输出格式

输出只有一行,该行包含两个正整数,分别为给定图像中肿瘤的面积和周长,用一个空格分开。

样例输入

6 99 99 99 99 99 99 99 99 99 50 99 99 99 99 49 49 50 51 99 50 20 25 52 99 40 50 99 99 99 99 99 99 99 99 99 99

样例输出

9 8

第二题: T236973 工艺品制作 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

4 个赞
int threeDArr[2][3][4] = 
{
	{
		{1, 2, 3, 4},
		{5, 6, 7, 8},
		{9, 10, 11, 12}
	},
	{
		{13, 14, 15, 16},
		{17, 18, 19, 20},
		{21, 22,23, 24}
	}
};

这样清楚些。

3 个赞

大受震撼