有一个m*n的矩阵A,每个元素都是大于等于0的正整数,取值0到12,对于每
有一个m*n的矩阵A,每个元素都是大于等于0的正整数,取值0到12,对于每一行的每个不等于0的元素,它的值除以2的结果要大于等于这一行中小于等于它的值的元素的个数。公式怎...
有一个m*n的矩阵A,每个元素都是大于等于0的正整数,取值0到12,对于每一行的每个不等于0的元素,它的值除以2的结果要大于等于这一行中小于等于它的值的元素的个数。 公式怎么列?
展开
1个回答
2017-05-10
展开全部
假设存有矩阵的是int mat[][]
1.对每行分别计算该行某个元素之后有多少个连续的0(包括它本身),记录进数组int a[][]中
比如mat[0][0]、mat[0][1]、...、mat[0][10]都是0,而mat[0][11]是1,那么记录a[0][0]=11,a[0][1]=10,...,a[0][10]=1,a[0][11]=0
这个步骤用循环次数为m*n的双层循环即可实现
2.枚举所求矩阵的左上角坐标,然后枚举这个矩阵的行数,利用之前记录的a数组可知这个矩阵的列数,如此得到一个左上角坐标和行数已知的尽可能大的全0子矩阵,然后判断这个子矩阵大小是否最大的,是则记录
代码大致如下
for (i=0;i
1.对每行分别计算该行某个元素之后有多少个连续的0(包括它本身),记录进数组int a[][]中
比如mat[0][0]、mat[0][1]、...、mat[0][10]都是0,而mat[0][11]是1,那么记录a[0][0]=11,a[0][1]=10,...,a[0][10]=1,a[0][11]=0
这个步骤用循环次数为m*n的双层循环即可实现
2.枚举所求矩阵的左上角坐标,然后枚举这个矩阵的行数,利用之前记录的a数组可知这个矩阵的列数,如此得到一个左上角坐标和行数已知的尽可能大的全0子矩阵,然后判断这个子矩阵大小是否最大的,是则记录
代码大致如下
for (i=0;i
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询