C++ 3-D 数组中的最小总和路径
我们得到了一个立方体,它可以使用3-D数组形成为立方体[长度][宽度][高度]。任务是计算将通过遍历立方体实现的最小求和路径,从而打印结果。
让我们看看这个的各种输入输出场景-
In −intcube[length][breadth][height]={{{2,4,1},{3,4,5},{9,8,7}},{{5,3,2},{7,6,5},{8,7,6}},{{3,2,1},{4,3,2},{5,4,3}}}
Out -3-D数组中的最小总和路径为:15
说明 -我们给出了一个具有长、宽和高的立方体。现在,我们将计算3-D数组中的最小和路径。因此,它将从2+4+1+3+5即15开始。
In −intcube[length][breadth][height]={{{1,2},{7,8}},{{3,5},{9,16}}}
Out -3-D数组中的最小总和路径为:24
说明 -我们给出了一个具有长、宽和高的立方体。现在,我们将计算3-D数组中的最小和路径。因此,它将从1+2+5+16即24开始。
下面程序中使用的方法如下
输入一个3-D数组以形成一个具有整数类型值的立方体。将数据作为传递给函数Minimum_SubPath(cube)。
函数内部Minimum_SubPath(cube)
创建一个与立方体大小相同的数组,并将arr[0][0][0]初始化为立方体[0][0][0]。
从i到1开始循环FOR,直到一个立方体的长度,并将arr[i][0][0]设置为arr[i-1][0][0]+cube[i][0][0]。
从j到1开始循环FOR直到立方体的宽度并将arr[0][j][0]设置为arr[0][j-1][0]+cube[0][j][0]
从k到1开始循环FOR直到立方体的高度并将arr[0][0][k]设置为arr[0][0][k-1]+cube[0][0][k]
从i到1开始循环FOR直到立方体的长度,然后从j到1开始另一个循环FOR直到数组的宽度并将min_val设置为Minimum(arr[i-1][j][0],arr[i][j-1][0],INT_MAX)和arr[i][j][0]到min_val+cube[i][j][0]
开始循环FOR从i到1直到立方体的长度,然后开始另一个循环FOR从k到1直到数组的高度,并将min_val设置为Minimum(arr[i-1][0][k],arr[i][0][k-1],INT_MAX)和arr[i][0][k]=min_val+cube[i][0][k]
开始循环FOR从k到1直到立方体的高度,然后开始另一个循环FOR从j到1直到数组的宽度,并将min_val设置为Minimum(arr[0][j][k-1],arr[0][j-1][k],INT_MAX)和arr[0][j][k]=min_val+cube[0][j][k]
开始循环FOR从i到1直到立方体的长度,然后开始另一个循环FOR从j到1直到数组的宽度,然后开始另一个循环从k到1直到立方体的高度,并将min_val设置为Minimum(arr[i-1][j][k],arr[i][j-1][k],arr[i][j][k-1])和arr[i][j][k]=min_val+cube[我][j][k]
返回arr[length-1][breadth-1][height-1]
函数内部Minimum(inta,intb,intc)
检查IFa小于b且a小于c然后返回a。
否则,返回c
否则如果,b小于c则返回b
否则,返回c
示例
#include<bits/stdc++.h> using namespace std; #define length 3 #define breadth 3 #define height 3 int Minimum(int a, int b, int c){ if(a < b){ if(a < c){ return a; } else{ return c; } } else if(b < c){ return b; } else{ return c; } } int Minimum_SubPath(int cube[][breadth][height]){ int i, j, k; int arr[length][breadth][height]; arr[0][0][0] = cube[0][0][0]; for(i = 1; i < length; i++){ arr[i][0][0] = arr[i-1][0][0] + cube[i][0][0]; } for(j = 1; j < breadth; j++){ arr[0][j][0] = arr[0][j-1][0] + cube[0][j][0]; } for(k = 1; k < height; k++){ arr[0][0][k] = arr[0][0][k-1] + cube[0][0][k]; } for(i = 1; i < length; i++){ for(j = 1; j < breadth; j++){ int min_val = Minimum(arr[i-1][j][0], arr[i][j-1][0], INT_MAX); arr[i][j][0] = min_val + cube[i][j][0]; } } for(i = 1; i < length; i++){ for(k = 1; k < height; k++){ int min_val = Minimum(arr[i-1][0][k], arr[i][0][k-1], INT_MAX); arr[i][0][k] = min_val + cube[i][0][k]; } } for(k = 1; k < height; k++){ for(j = 1; j < breadth; j++){ int min_val = Minimum(arr[0][j][k-1], arr[0][j-1][k], INT_MAX); arr[0][j][k] = min_val + cube[0][j][k]; } } for(i = 1; i < length; i++){ for(j = 1; j < breadth; j++){ for(k = 1; k < height; k++){ int min_val = Minimum(arr[i-1][j][k], arr[i][j-1][k], arr[i][j][k-1]); arr[i][j][k] = min_val + cube[i][j][k]; } } } return arr[length-1][breadth-1][height-1]; } int main(){ int cube[length][breadth][height] = { { {2, 4, 1}, {3, 4, 5}, {9, 8, 7}}, { {5, 3, 2}, {7, 6, 5}, {8, 7, 6}}, { {3, 2, 1}, {4, 3, 2}, {5, 4, 3}}}; cout<<"Minimum Sum Path In 3-D Array are: "<<Minimum_SubPath(cube); return 0; }输出结果
如果我们运行上面的代码,它将生成以下输出
Minimum Sum Path In 3-D Array are: 15