求数组的子数组之和的最大值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]. 解 ...
随机推荐
- win10家庭中文版CUDA+CUDNN+显卡GPU使用tensorflow-gpu训练模型安装过程(精华帖汇总+重新修改多次复现)
查看安装包 pip list 本帖提供操作过程,具体操作网上有好多了,不赘述.红色字体为后来复现出现的问题以及批注 题外话: (1)python 的环境尽量保持干净,尽量单一,否则容易把自己搞晕,不知 ...
- 『动善时』JMeter基础 — 38、JMeter中实现跨线程组关联
目录 1.JMeter中实现跨线程组关联说明 (1)JMeter中实现跨线程组关联步骤 (2)测试计划内包含的元件 2.用户登陆请求的相关操作 (1)进行登陆操作获取Cookie信息 (2)把Cook ...
- 编译原理-非确定有穷自动机(nondeterministic finite automata,NFA)
是一个五元组,M=(S,∑,f,S0,F) S:有穷状态集 ∑:输入字母表(有穷) f:f(S,α)=S' 表示从一个状态S出发,识别了一个字α后,可以到达S'这个状态集合之间的某一个状态(可能的后继 ...
- InnoDB 静态数据加密的常见问题合集
1. 数据是否为有权查看数据的用户解密? 是的.InnoDB静态数据加密旨在透明地在数据库中应用加密,而不会影响现有应用程序.以加密格式返回数据会破坏大多数现有应用程序. InnoDB静态数据加密提供 ...
- HTTP客户端连接,选择HttpClient还是OkHttp?
为什么会写这篇文章,起因于和朋友的聊天 这又触及到我的知识盲区了,首先来一波面向百度学习,直接根据关键字httpclient和okhttp的区别.性能比较进行搜索,没有找到想要的答案,于是就去over ...
- Mybatis 中经典的 9 种设计模式!面试可以吹牛了
虽然我们都知道有23个设计模式,但是大多停留在概念层面,真实开发中很少遇到.Mybatis源码中使用了大量的设计模式,阅读源码并观察设计模式在其中的应用,能够更深入的理解设计模式. Mybatis至少 ...
- 「10.17-10.18」liu_runda’s模拟
暂咕 $day1$ A. 位运算 分类讨论,贡献分离. B. 集合论 维护类似时间戳的东西 C. 连连看 考场思路太局限了,考虑容斥. 我们可以看出两个方块能作出贡献,实际上是一个极大联通块(白块)所 ...
- 散列数据结构以及在HashMap中的应用
1. 为什么需要散列表? 对于线性表和链表而言,访问表中的元素,时间复杂度均为O(n).即便是通过树结构存储数据,时间复杂度也为O(logn).那么有没有一种方式可以将这个时间复杂度降为O(1)呢?当 ...
- win10下简单截图
win10 下面可以 win+shift+s 拖动截图,个人感觉是最简单的
- hive学习笔记之三:内部表和外部表
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...