求数组的子数组之和的最大值IV
在之前的基础上又安排了二维数组的,在课上一开始是理解错要求了,简单的以为用循环数组就能解决,但是却忽视了子数组是否能构成矩形,之后课下和同学们讨论,主要是多重遍历,但是我还是没搞明白怎么构成新的二维数组,之后同学给了一段源代码,自己还在摸索:
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 }
求数组的子数组之和的最大值IV的更多相关文章
- 求数组的子数组之和的最大值II
这次在求数组的子数组之和的最大值的条件下又增加了新的约束: 1.要求数组从文件读取. 2.如果输入的数组很大, 并且有很多大的数字, 就会产生比较大的结果 (考虑一下数的溢出), 请保 ...
- 求数组的子数组之和的最大值III(循环数组)
新的要求:一维数组改成循环数组,只是涉及简单算法,只是拿了小数做测试 想法:从文件读取数组,然后新建数组,将文件读取的数组在新数组中做一下连接,成为二倍长度的数组,然后再遍历,将每次遍历的子数组的和存 ...
- C#中求数组的子数组之和的最大值
<编程之美>183页,问题2.14——求子数组的字数组之和的最大值.(整数数组) 我开始以为可以从数组中随意抽调元素组成子数组,于是就有了一种想法,把最大的元素抽出来,判断是大于0还是小于 ...
- N元数组的子数组之和的最大值
题目:有N个整数的元素的一维数组,求子数组中元素之和中最大的一组(思想:动态规划) 分析: 设该数组为array[N], 那么对于array[i]该不该在元素之和最大的那个子数组中呢?首先,不如假设a ...
- 求二维数组联通子数组和的最大值 (联通涂色) beta!
算法十分臃肿,效率捉鸡,不知用了多少循环,还有bug...任重道远,编程之美. 思想:按行遍历,找出每行的最大子数组.若行间都联通,行最大子数组相加后,再加上独立的正数.若行间不连通,找出较大子路径, ...
- [LeetCode] Minimum Size Subarray Sum 最短子数组之和
Given an array of n positive integers and a positive integer s, find the minimal length of a subarra ...
- Minimum Size Subarray Sum 最短子数组之和
题意 Given an array of n positive integers and a positive integer s, find the minimal length of a suba ...
- [LeetCode] 209. Minimum Size Subarray Sum 最短子数组之和
Given an array of n positive integers and a positive integer s, find the minimal length of a contigu ...
- lintcode:子数组之和为0
题目: 子数组之和 给定一个整数数组,找到和为零的子数组.你的代码应该返回满足要求的子数组的起始位置和结束位置 样例 给出[-3, 1, 2, -3, 4],返回[0, 2] 或者 [1, 3]. 解 ...
随机推荐
- Linux 2 的 Windows 子系统上发布 CUDA
Linux 2 的 Windows 子系统上发布 CUDA 为响应大众需求,微软 宣布 在 2020 年 5 月的 建造 大会上推出了 建造 ( WSL 2 ) – GPU 加速功能.这一特性为许多计 ...
- 远程服务调用RMI框架 演示,和底层原理解析
远程服务调用RMI框架: 是纯java写的, 只支持java服务之间的远程调用,很简单, // 接口要继承 Remote接口 public interface IHelloService extend ...
- 编译原理-NFA转化成DFA
1.假定NFA M=<S,∑,f,S0,F> 对M的状态转换图进行以下改造: ①引进新的初态结点X和终态结点Y, X,Y∈S, 从X到S0中的任意结点连一条ε箭弧, ...
- MongoDB学习笔记01:入门
MongoDB简介 MongoDB是一个开源.高性能.无模式的文档型数据库,当初的设计就是用于简化开发和方便扩展,是NoSQL数据库产品中的一种.是最 像关系型数据库(MySQL)的非关系型数据库. ...
- springmvc——mvc:annotation-driven标签的作用
- 重新整理 mysql 基础篇————— 事务隔离级别[四]
前言 简单介绍一下事务隔离的基本 正文 Read Uncommitted(未提交读) 这个就是读未提交.就是说在事务未提交的时候,其他事务也可以读取到未提交的数据. 这里举一个例子,还是前一篇的例子. ...
- 【NX二次开发】uf5945获得旋转矩阵、uf5947根据变换矩阵移动或复制对象
返回一个矩阵,可以绕任意轴旋转. 与uf5947结合可以将对象沿着任意轴进行旋转.不是所有对象都能用uf5947变换,带参的实体.部件都不可以用此函数变换.下面是旋转WCS的例子. extern Dl ...
- iis配置代理服务器解决跨域问题
iis配置代理服务器解决跨域问题 解决:在发布的项目根目录添加web.config配置文件 在配置文件中system.webServer节点中加入 <?xml version="1.0 ...
- Spring Boot下的一种导出Excel文件的代码框架
1.前言 在Spring Boot项目中,将数据导出成Excel格式文件是常见的功能.与Excel文件导入类似,此处也用代码框架式的方式实现Excel文件导出,使得代码具有可重用性,并保持导出数据 ...
- 《MySQL面试小抄》索引考点二面总结
<MySQL面试小抄>索引考点二面总结 我是肥哥,一名不专业的面试官! 我是囧囧,一名积极找工作的小菜鸟! 囧囧表示:小白面试最怕的就是面试官问的知识点太笼统,自己无法快速定位到关键问题点 ...