C矩阵中两行元素之和的最大差
我们得到一个矩阵,任务是找到矩阵两行中元素之和之间的最大差。假设我们有一个矩阵M [i,j],其中包含i行和j列。令行为R 0至R i-1。差值将通过减去(R y的元素之和)-(R x的元素之和)来计算,其中x <y。
现在让我们使用示例了解我们必须做的事情-
输入项
M[4][4] = {{ 1,2,0,5 },
{0,1,1,0},
{7,2,3,2}
{1,2,4,1}};
输出结果
Maximum difference here is : 12
解释-在这里,第2行的元素之和最大为14,而第1行的元素之和最小为2。因此,最大差为14-2 = 12。
输入项
M[4][4] = {{ 0,2,0,5 },
{0,1,4,0},
{1,2,3,2}
{2,2,6,0}};
输出结果
Maximum difference here is : 5
说明-第4行的元素之和最大为10,第2行的元素之和最小值为5。因此,最大差为10-5 = 10
在以下程序中使用的方法如下
输入矩阵中的行数和列数,以使其至少具有两行。
在该
rowmaxd()
函数中,我们传递输入矩阵及其行数和列数,并返回行总和的最大差。在这里,我们首先将矩阵M [row] [col]的每一行的元素总和存储在名为RSum [i]的数组中。注意,RSum [row]的长度取决于M [row] [col]中的行数。
然后,我们将MD假定为RSum [1] -RSum [0]之间的最大差。其中RSum [0]是第0行的所有元素的总和,而RSums [1]是第1行的所有元素的总和。
我们还假设RSum [0]至少在RSum [row]中,并将其存储在MIN变量中。
在从0到i的for循环中,我们将遍历每个RSum [row]并比较RSum [i] -MIN> MD之间的差异。如果是这样,请更新MD。否则检查RSum [row] <MIN并分别更新MIN。
示例
#include<stdio.h>#define MAX 100
//创建函数以计算两行元素之和之间的最大差,例如
that second row appears before the first
int rowmaxd(int M[][MAX], int row, int col){
//用于存储每行元素的总和
int RSum[row];
for(int i=0;i<row;i++){
int sum=0;
for(int j=0;j<col;j++)
sum+=M[i][j];
RSum[i]=sum;
}
//calculate now max difference between two elements of RSum such that in RSum[j]-RSum[i], i<j
int MD=RSum[1]-RSum[0];
int MIN=RSum[0];
for (i = 1; i < row; i++){
//如果此差异大于MD,则更新MD-
if(RSum[i]-MIN>MD)
MD=RSum[i]-MIN;
//如果此值甚至小于MIN,则更新MIN-
if(RSum[i]<MIN)
MIN=RSum[i];
}
return MD;
}
//驱动程序
int main(){
int r = 5, c = 4;
int mat[][MAX] = {
{-1, 2, 3, 4},
{6, 3, 0, 1},
{-1, 7, 8, -3},
{3, 5, 1, 4},
{2, 1, 1, 0}};
cout<<”Maximum difference of sum of elements in two rows in a matrix is: ”<<rowmaxd(mat, r, c);
return 0;
}
输出结果
如果运行上面的代码,我们将获得以下输出-
Maximum difference of sum of elements in two rows in a matrix: 5
以上是 C矩阵中两行元素之和的最大差 的全部内容, 来源链接: utcz.com/z/326889.html