示例:
原理:
这个算法实现起来不算太复杂,具体解法如下:
首先将矩阵存入到一个二维数组里面。由于所求的是二阶子阵,所以只需要记录二阶子阵的左上角数据的坐标(下标)即可,利用双层循环,追踪左上角数据的坐标,并且将乘积赋值给 now,判断now与max的大小关系,如果now>max,则将该数据的坐标 (x,y) 存到一个数组sum[2]里面。(随时追踪并更新乘积和坐标)
最后将max,最大子矩阵按具体要求输出(因为sum[2]记录了最大子矩阵的左上角数据的坐标,很容易输出最大子矩阵)
话不多说,上代码!!!
代码如下:
#include<stdio.h>
int main(){
int m,n,sum[2];
scanf("%d%d",&m,&n);
long int a[m][n];//存储矩阵信息
long long int now=0,max=