• 求一个二维数组的最大子矩阵


    算法描述:本题可以使用穷举法,但是那样不容易实现以及效率不高,我们的想法是,将二维数组变成一维数组,再将此“一维数组”按照上次的做法既可求出最大子数组,

    怎么样将二维变成一维呢:例如我们做的是四行四列的数组,将每一行用一个sum来表示,则有sum[1],sum[2],sum[3],sum[4],sum[1]动态的代表此行的和,例如前两个数的和,再往后变成前三个数的和,每当求出一行的和时,同时也求出了以下三行的和,然后将sum数组看成一维数组进行比较求出最大值,然后动态的向后推进,直到遍历完,即可求出最大值

    程序:

    #include<stdio.h>
    int main()
    {
    	int m,n,i,j,i1,z;
    	int sum1,sum[4];
    	int a[4][4];
    	int max=0;
    	printf("请输入数据
    ");
    	for(i=0;i<4;i++)
    		for(j=0;j<4;j++)
    		  scanf("%d",&a[i][j]);
            for(m=0;m<4;m++)
    		{
    			for(i1=0;i1<4;i1++)
    			{sum[i1]=0;}//初始化
    			for(j=m;j<4;j++)
    			{
    				for(i=0;i<4;i++)
    				{
    					sum[i]+=a[i][j];
    				}//求行的值变成一维数组
    				for(n=0;n<4;n++)
    				{
    					sum1=0;
    					for(z=n;z<4;z++)
    					{
    						sum1+=sum[z];
    						if(sum1>max)
    							max=sum1;
    					}
    				}
    			}
    		}
    		printf("最大值为%d
    ",max);
    
    	return 0;
    }
    

      运行结果:

        

     课下讨论截图:

  • 相关阅读:
    Javascript逻辑运算认识
    Javascript基本数据认识
    python爬虫数据提取之bs4的使用方法
    权限和频率组件的使用
    版本控制和认证组件的使用
    drf中View和router的详解
    Serializers组件详解
    REST架构简介
    模型层中QuerySet的学习
    最全总结!聊聊 Python 发送邮件的几种方式
  • 原文地址:https://www.cnblogs.com/wangweiguang/p/3608577.html
Copyright © 2020-2023  润新知