我们得到了一个整数数组和一个整数变量,即“X”。任务是首先从给定的数组中形成子数组,然后将子数组的所有元素与整数X相乘。最后找出将贡献最大和的元素。
让我们看看这个的各种输入输出场景-
在-intarr[]={2,4,1,-5,-2},X=3
Out -将任何子数组的所有元素与X相乘后最大化子数组总和为:21
解释 -我们给出了一个数组和一个整数变量作为X。首先,从给定的数组中获取子数组,假设{2,4,1}。现在将子数组的所有元素乘以X,即3,数组将是{6,12,3,-5,-2}。最后,检查6+12+3=21返回的最大子数组和。
在 -intarr[]={-1,2,-6,3,-4},x=-1
Out-将任何子数组的所有元素与X相乘后最大化子数组总和为:11
解释-我们给定了一个数组和一个整数变量作为X。首先,从给定的数组中获取子数组,比如{-1,-6,-4}。现在将子数组的所有元素与X相乘,即-1,因此数组将是{1,2,6,3,4}。最后,检查由1+6+4=11返回的最大子数组和。
输入一个整数数组和一个整数变量作为X。计算数组的大小并将数据传递给函数Max_Subarray(arr,size,x)。
函数内部Max_Subarray(arr,size,x)
将数组声明为intarr_2[size][3]并将临时变量声明为temp为0。
使用memset()C++中的方法用-1初始化数组arr_2的所有元素。
从i到0开始循环FOR直到数组的大小。在循环内,将temp设置为对函数max(temp,check(i,0,arr,arr_2,size,x))的调用
返回温度。
函数内部intcheck(intfirst,intlast,intarr[],intarr_2[Max_size][3],intsize,intx)
将临时变量声明为计数为0。
首先检查IF=size然后返回0
检查是否arr_2[first][last]!=-1然后返回arr_2[first][last]。
检查IFlast=0然后调用C++内置的max函数找出最大值为max(count,arr[first]+check(first+1,0,arr,arr_2,size,x))并设置count=max(count,x*arr[first]+check(first+1,1,arr,arr_2,size,x))
ELSEIFchecklast=1然后将count设置为max(count,x*arr[first]+check(first+1,1,arr,arr_2,size,x))并将count设置为max(count,arr[first]+check(first+1,2,arr,arr_2,size,x))
否则,将计数设置为max(count,arr[first]+check(first+1,2,arr,arr_2,size,x));
返回arr_2[first][last]进行计数。
打印结果。
如果我们运行上面的代码,它将生成以下输出
将任何子数组的所有元素与X相乘后最大化子数组和是: 21