zoukankan      html  css  js  c++  java
  • 多维数组求子数组最大和

    这一篇为上一篇一维数组的扩展:一维数组求最大和博客链接

     问题:

    求解二维数组的子数组中和最大的值。

    代码:

    // 20140319_2.cpp : Defines the entry point for the console application.
    //DATA:2014-03-19
    //CODE:BlackSmith
    //求二维数组的子数组中和最大的数组。这个是以为数组的扩展。
    
    
    #include "stdafx.h"
    int main()
    {
        int m,n,i,j,k,z;
        static int  q,b;
        int temp_sum,sum[100]; 
        int a[100][100];
        int max=0;
    
        printf("请输入数组的行数和列数
    ");
        scanf("%d%d",&q,&b);
    
    
        printf("请输入数据
    ");
        for(i=0;i<q;i++)
        {
            for(j=0;j<b;j++)
            {
                scanf("%d",&a[i][j]);
            }
        }
    
    
        for(m=0;m<q;m++)
        {
            for(k=0;k<b;k++)
            {
                sum[k]=0; 
            }
            for(i=0;i<q;i++)
            {
                //将同一行的数组相加为一个数组
                for(j=m;j<b;j++)
                {
                    sum[i]+=a[i][j];
    
                }
                
                //一维数组的最大数组的代码
                for(n =0;n<b;n++)
                {
                    temp_sum=0;
                    for(z=n;z<q;z++)
                    {
                        temp_sum+=sum[z];
                        if(temp_sum>max)
                        {
                            max=temp_sum;
                        }
                    }
                }
            }
        }
    
    
        printf("最大值为%d
    ",max);
        return 0;
    }

    具体过程:

    如果不了解怎么求解一维数组的子数组的最大和问题,请参考开篇的链接。

    首先我们首先任意假设一个二维数组,如图所示:4*4维

    我们按照程序的思路,我们求解最大子数组的话,得想办法穷列举所有可能的子数组。我们可以接着按照一维数组的思维看待这个问题。

    第一行按照一维数组的思路仍然是全部相加的和最大,然后再求第二列

    然后,下一步,把一二行同列的数字相加,按照一维数组的接着算

    相当于下面的图片(第一行和第二行相加以后的)

    然后依次比较,这样每次就能得到相应的数据块了。

    这个算法比较绕,大家可以仔细分析代码。分析出结果。

  • 相关阅读:
    机器学习分类
    12.python中高阶函数以及内建函数(map,filter,sorted),和闭包
    python中的异常处理相关语句和迭代器
    和好朋友渐行渐远是什么感觉?
    MDX学习笔记(整理) MDX语法
    Cognos软件介绍文档(原创)
    隐藏
    android::Mutex::Autolock的使用
    Android中sp和wp的使用
    Day 07 字符编码,文件操作
  • 原文地址:https://www.cnblogs.com/renguoqing/p/3611907.html
Copyright © 2011-2022 走看看