C ++中矩阵中沙漏的最大和
在这个问题上,我们得到一个矩阵。我们的任务是创建一个程序,该程序在C ++中的矩阵中查找沙漏的最大和。
程序说明-在这里,我们将找到可为给定矩阵元素创建的所有沙漏的最大和。
沙漏是由7种元素组成的形状,其形状如下:
X X XX
X X X
让我们举个例子来了解这个问题,
输入-
array ={{2 4 0 0}
{0 1 1 0}
{4 2 1 0}
{0 3 0 1}}
输出-
说明-
Hour glass are :2 4 0 0 1 1
1 2
4 2 1 0 3 0
4 0 0 1 1 0
1 1
2 1 0 3 0 1
因此,可以使用以下索引创建一个沙漏,
matrix[i][j] matrix[i][j+1] matrix[i][j+2]matrix[i+1][j+1]
matrix[i+2][j] matrix[i+2][j+1] matrix[i+2][j+2]
我们将找到从[0] [0]到[R2] [C-2]起点的数组所有这些元素的总和。然后找到所有由数组元素创建的沙漏的maxSum。
示例
该程序说明了我们解决方案的工作原理,
#include<iostream>using namespace std;
const int row = 4;
const int col = 4;
int findHourGlassSum(int mat[row][col]){
if (row<3 || col<3)
return -1;
int maxSum = 0;
for (int i=0; i<row-2; i++){
for (int j=0; j<col-2; j++){
int hrSum = (mat[i][j]+mat[i][j+1]+mat[i][j+2])+ (mat[i+1][j+1])+ (mat[i+2][j]+mat[i+2][j+1]+mat[i+2][j+2]);
maxSum = max(maxSum, hrSum);
}
}
return maxSum;
}
int main() {
int mat[row][col] = {
{2, 4, 0, 0},
{0, 1, 1, 0},
{4, 2, 1, 0},
{0, 3, 0, 1}};
int maxSum = findHourGlassSum(mat);
if (maxSum == -1)
cout<<"Not possible";
else
cout<<"Maximum sum of hour glass created is "<<maxSum;
return 0;
}
输出结果
Maximum sum of hour glass created is 14
以上是 C ++中矩阵中沙漏的最大和 的全部内容, 来源链接: utcz.com/z/354369.html