在之前的基础上又安排了二维数组的,在课上一开始是理解错要求了,简单的以为用循环数组就能解决,但是却忽视了子数组是否能构成矩形,之后课下和同学们讨论,主要是多重遍历,但是我还是没搞明白怎么构成新的二维数组,之后同学给了一段源代码,自己还在摸索:

  1 package b;
  2
  3 import java.util.Scanner;
  4
  5 import javax.print.attribute.standard.PrinterLocation;
  6
  7 public class b
  8 {
  9     public static void main(String[] args)
 10     {
 11         Scanner scanner=new Scanner(System.in);
 12         System.out.println("请输入二维数组的行和列:");
 13         int hang=scanner.nextInt();
 14         int lie=scanner.nextInt();
 15         System.out.println("请输入二维数组:");
 16         int[][] shuzu=new int[hang][lie];
 17
 18         int i,j;
 19         for(i=0;i<hang;i++)
 20         {
 21             for(j=0;j<lie;j++)
 22             {
 23                 shuzu[i][j]=scanner.nextInt();
 24             }
 25         }
 26
 27         System.out.println("此数组中连续和的最大值为:"+max(shuzu,hang,lie));
 28
 29     }
 30
 31     static int max(int shuzu[][],int hang,int lie)
 32     {
 33         int max=0,sum=0;
 34         int i,j;
 35         int[] b=new int[lie];
 36         int[] up=new int[hang];
 37         int[] down=new int[hang];
 38         int[] t=new int[hang];
 39         if(lie==1)
 40         {
 41             for (i=0;i<hang;i++)
 42             {
 43                 sum+=shuzu[i][0];
 44                 if(sum<0)
 45                 {
 46                     sum=0;
 47                 }
 48                 if(sum>max)
 49                 {
 50                     max=sum;
 51                 }
 52             }
 53
 54            if(max==0)
 55            {
 56                for(i=0;i<hang;i++)
 57                {
 58                    if(i==0)
 59                    {
 60                        max=shuzu[i][0];
 61                    }
 62                    if(shuzu[i][0]>max)
 63                    {
 64                        max=shuzu[i][0];
 65                    }
 66                }
 67             }
 68         }
 69         else
 70         {
 71             for(i=0;i<hang;i++)
 72             {
 73                 for(j=0;j<lie;j++)
 74                 {
 75                     b[j]=shuzu[i][j];
 76                 }
 77                 int[] c=new int[100];
 78                 c[0]=0;
 79                 int sum1=0,max1=0,k;
 80                 for(k=0;k<lie;k++)
 81                 {
 82                     if(sum1<0)
 83                     {
 84                         sum1=b[k];
 85                     }
 86                     else
 87                     {
 88                         sum1=sum1+b[k];
 89                     }
 90                     c[k]=sum1;
 91                 }
 92                 max1=c[0];
 93                 int mmark=0,smark=0;
 94                 for(k=0;k<lie;k++)
 95                 {
 96                     if (max1<c[k])
 97                     {
 98                         max1= c[k];
 99                         mmark = k;
100                     }
101                 }
102                 for (k = mmark;k >= 0;k--)
103                 {
104                     if (c[k] == b[k])
105                     {
106                         smark = k;
107                         break;
108                     }
109                 }
110                 sum=max1;
111
112                 up[i]=smark;
113                 down[i]=mmark;
114                 t[i]=sum;
115
116             }
117             int t2=t[0];
118             for(i=0;i<hang-1;i++)
119             {
120                 if(up[i]<=down[i+1] && down[i]>=up[i+1])
121                 {
122                     t2+=t[i+1];
123                 }
124                 for(j=up[i];j<up[i+1];j++)
125                 {
126                     if(shuzu[i+1][j]>0) t2+=shuzu[i+1][j];                   //判别独立正数
127                 }
128
129             }
130             max=t2;
131         }
132         return max;
133     }
134 }

转载于:https://www.cnblogs.com/flw0322/p/10614521.html

求数组的子数组之和的最大值IV相关推荐

  1. 求数组的子数组之和的最大值

    一个有N个整数元素的一维数组( A[0], A[1], ... , A[n-2], A[n-1]),子数组之和的最大值是什么?(要求子数组的元素是连续的) 例子:有数组( -2, 5, 3, -6, ...

  2. 编程之美 2.14求数组的子数组之和的最大值

    对于一个有N个元素的数组,a[0]~a[n-1],求子数组最大值. 如:数组A[] = [−2, 1, −3, 4, −1, 2, 1, −5, 4],则连续的子序列[4,−1,2,1]有最大的和6. ...

  3. 算法-求数组的子数组之和的最大值

    一个一维int数组,这个数组有很多子数组,那么子数组之和的最大值是什么呢? 思考 1.题目说的子数组是连续的: 2.题目只需要求和,并不需要返回子数组的具体位置: 3.数组的元素是整数,所以数组可能包 ...

  4. Programe_Of_Beauty:2.14 求数组的子数组之和的最大值

    问题:一个有N个整数元素的一维数组,那么求子数组和的最大值. 分析:首先我们明确问题,子数组是联系的,不用返回元素的位置,元素是整数,可能为正,负或0.我们来看看最经典的解法:a[0],a[1]-a[ ...

  5. 编程之美2.14 求数组的子数组之和的最大值

          这是一个在面试中出现概率很高的一道题目,就拿我来说吧,面试了5家公司中,两家公司问了这道题目,可见,这道题目是非常经典的.       解题思想也不是很难,我熟悉的有:两种解题办法:   ...

  6. 编程之美-求数组的子数组之和的最大值方法整理

    [试题描述] 方法一: 上面这个算法的时间复杂度为O(n^3),改进后如下: 此时算法的时间复杂度为O(n^2) 方法二:时间复杂度O(nlogn) 方法三:时间复杂度O(n) 改进一下,可以得到空间 ...

  7. 编程之美-2.14-求数组的子数组之和的最大值

    这个以前写过,见求数组的最长子数组之和的最大值 这里说一下后面扩展题目. 1. 简述 1) 如果数组首尾相连,即允许找到一组数字(A[i],···,A[n-1], A[0],···, A[j]),请使 ...

  8. 【C】课堂结对联系-求整数数组的子数组之和的最大值(党云龙、黄为)

    测试题目 求整数数组的子数组之和的最大值. 题目分析 首先是明确题目的目的:求最大值:其次是考虑子数组求和.这里将求最大值写成一个单独的函数.主函数未测试函数.这里用到了二重循环,时间复杂度为N^2. ...

  9. 《团队开发一(求一个数组的连续的子数组之和的最大值)》

    <团队开发一(求一个数组的连续的子数组之和的最大值)> (1)设计思想:一般的,求一个数组的最大子数组之和即是按数组顺序依次让前几个数的和与下一个数进行比较,设一变量来装每次比较后的较大的 ...

最新文章

  1. MTK 添加自定义PMS权限 Patch
  2. 开源大数据周刊-第103期
  3. 设备巡检app android开发,富士康移动巡检app安卓,富士康移动巡检app安卓手机软件预约 v1.0-手游汇...
  4. 5.9 亿国内用户简历遭殃,数据库持续“裸奔”!
  5. POJ1009 Edge Detection
  6. MyBatis的环境搭建(图文)
  7. 文本框里面加删除按钮
  8. 聚宽macd底背离_MACD背离技术分析(图解)
  9. 从找不到iTv\iTvApp.exe,到Duilib加载资源文件失败的通用解法
  10. Android 调用系统相册选取视频,过滤视频(兼容小米)
  11. CAP理论、AP架构、CP架构
  12. 一文读懂图像信号中的高频和低频
  13. 如果格局决定人生,那到底什么决定了格局
  14. 并查集 浙师大oj1212
  15. Kubernetes Dashboard搭建流程
  16. Vue的slot-scope和scope.row(个人理解)
  17. 复旦大学信息科学与工程考研经验
  18. 面向对象的3 大特性封装、继承、多态。咱们今天用代码的形式来解释一下这名声赫赫的3大特性。...
  19. caffe把数据转化为lmdb格式zxw.sh
  20. 攻防世界 sql注入

热门文章

  1. 手机无法配置exchange客户端的解决方法
  2. GIS 缓冲区应用及算法实现
  3. vue常用语法 渲染数据
  4. virtualenv wrapper安装配置
  5. CENTOS手动安装修复python ,YUM CENTOS手动安装修复YUM
  6. iphone4/iphone5/iphone6/iphone6Plus响应式布局适配代码
  7. Verilog_Day2
  8. 斯坦福机器学习视频笔记 Week6 关于机器学习的建议 Advice for Applying Machine Learning...
  9. ElasticSearch 2 (26) - 语言处理系列之打字或拼写错误
  10. [NOIP2001]Car的旅行路线