设计题目:求一个二维数组的连通的数组中和最大的最大值。

设计思路:

建立二维数组并遍历二维数组,将所有正整数分块,验证是否联通,如果不联通,判断路径。

package demo;
import java.util.*;
public class Lmax {
static Scanner scanner = new Scanner(System.in);
public static void main(String args[]){
int m,n;
int b;
Scanner scanner = new Scanner(System.in);
System.out.println("请输入二维数组的列数:");
m = scanner.nextInt();
System.out.println("请输入二维数组的行数:");
n = scanner.nextInt();
int arr[][] = new int[n][m];
System.out.println("请输入:");
for(int i = 0;i<n;i++)
for(int j=0;j<m;j++)
{
arr[i][j] = scanner.nextInt();
}
System.out.println("\n");
b = maxArrSum(arr);
System.out.println("最大联通数组和为"+b);
}

public static int[][] arrSum(int arr[][]){
int m = arr.length;
int n = arr[0].length;
int p[][] = new int[m+1][n+1];
p[0][0] = arr[0][0];
for(int i=0; i<=m; i++) p[i][0] = 0;
for(int i=0; i<=n; i++) p[0][i] = 0;
for(int i=1; i<=m; i++){
for(int j=1; j<=n; j++){
p[i][j] = p[i-1][j] + p[i][j-1] + arr[i-1][j-1] - p[i-1][j-1];
}
}
return p;
}

static int maxArrSum(int arr[][]){
int m = arr.length;
int n = arr[0].length;
int p[][] = arrSum(arr);
int ans = Integer.MIN_VALUE;
for(int i=1; i<=m; i++){
for(int j=1; j<=n; j++){
for(int endi=i; endi <=m; endi++){
for(int endj=j; endj<=n; endj++){
int sum = p[endi][endj] - p[i-1][endj] - p[endi][j-1] + p[i-1][j-1];
if(ans < sum) ans = sum;
}
}
}
}
return ans;
}

}

程序截图:

总结:这次作业的完成,是我和张家星同学共同努力找出思路并完善程序的,实现的算法较为复杂,在我们互相的讨论下才能逐渐发掘,进行复杂问题的简单化,并成功编写。

转载于:https://www.cnblogs.com/ylx111/p/6680253.html

二维数组的最大联通子数组和相关推荐

  1. smarty二维foreach示例[顺代一维数组],再次加强版

    2019独角兽企业重金招聘Python工程师标准>>> smarty二维foreach示例[顺代一维数组],再次加强版   WEB2.0  root 2009-4-9 10:46  ...

  2. 算法学习-零子数组,最大连续子数组

    题目 对于长度为N的数组A,求连续子数组的和最接近0的值. 如: 数组A:1,-2,3,10,-4,7,2,-5 它是所有子数组中,和最接近0的是哪个? 算法流程 申请比A长1的空间sum[-1,0, ...

  3. 二维数组中最大连通子数组

    题目: 输入一个二维整形数组,数组里有正数也有负数. 求所有子数组的和的最大值. 解决思路: 因为最大连通子数组必定是包含整数最多的区域,所以首先找到整数分布的区域,再将各个区域连接起来,判断是否最大 ...

  4. 结对项目——最大联通子数组

    返回整数数组的最大联通子数组 一.程序要求 1.输入一个二维整形数组,数组中有正数也有负数. 2.求所有子数组的和的最大值,要求时间复杂度为O(n). 3.程序要使用的数组放在一个叫input.txt ...

  5. java 二维链表_Java数据结构与算法----数组与链表

    数据类型 1 数据类型介绍 数据类型的分类(按照结构划分):线性结构和非线性结构 线性结构:线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系 线性结构有两种不同的存储结构,即顺序 ...

  6. 课堂作业:返回一个二维整数组中最大子数组的和

    要求: 1.输入一个二维整形数组,数组里有整数也有负数. 2.二维数组中连续的一个子矩阵组成一个子数组,每个子数组都有一个和. 3.求所有子数组的和的最大值.要求时间复杂度为O(n). 结对编程要求: ...

  7. 51nod 1213 二维曼哈顿距离最小生成树 树状数组+最小生成树

    Description 二维平面上有N个坐标为整数的点,点x1 y1同点x2 y2之间的距离为:横纵坐标的差的绝对值之和,即:Abs(x1 - x2) + Abs(y1 - y2)(也称曼哈顿距离). ...

  8. C语言基础知识之define宏定义表达式,undef,内存对齐,a和a的区别,数组知识点,int (*)[10] p,二维数组参数与二维指针参数,函数指针数组,常见的内存错误及对策

    一.用define宏定义表达式 1.定义一年有多少秒: #define SEC_A_YEAR 60*60*24*365 //上述描述不可靠,没有考虑到在16位系统下把这样一个数赋给整型变量的时候可能会 ...

  9. HDU6681 二维偏序计算贡献值 树状数组 离散化

    http://acm.hdu.edu.cn/showproblem.php?pid=6681 交点个数加1就是答案 使用二维偏序计算横竖射线的交点 #include <bits/stdc++.h ...

最新文章

  1. Windows下Git push or pull免输入密码设置
  2. Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Scale/Scale的Command)
  3. OpenGL混合功能实例
  4. HDU - 4565 So Easy!(共轭构造+推公式+矩阵快速幂)
  5. Linux root用户无法打开Chrome或则chromium(kali)
  6. php函数相关函数,PHP数组相关函数汇总
  7. scheme解释器 C语言实现,使用Scala写了个简单的Scheme解释器
  8. 【C++深度剖析教程6】C++之友元
  9. (vue基础试炼_04)使用组件改造TodoList
  10. OJ系统原理与实现:Python自动化测试另一个Python程序功能是否正确
  11. webrtc自动增益
  12. redis作用_Java高级架构笔记——实现故障恢复自动化:详解Redis哨兵技术
  13. HTML5七夕情人节表白网页制作【蓝色3D动态相册】HTML+CSS+JavaScript 程序员表白3D相册代码 html生日快乐祝福网页制作
  14. 数据库开源项目_开源项目贴纸库
  15. centos7系统详细安装步骤
  16. 类似微信聊天 日期算法(转换)
  17. SOLO: Segmenting Objects by Locations 论文学习
  18. Discuz论坛 创始人密码忘记解决办法!
  19. 判断点是否在图形(矩形、椭圆、多边形)内的算法(一)
  20. 51单片机汇编学习笔记4——子函数

热门文章

  1. ssm框架下web项目,web.xml配置文件的作用(详解)
  2. egg 编码规范_从 Egg.js 到 NestJS,爱码客后端选型之路
  3. linux集群组建和管理,Redis集群搭建与管理
  4. cuda 图片拆分_急需,PDF怎么拆分啊?
  5. 在plc中用c语言实现电梯控制程序,三菱FX2N PLC电梯运行控制程序设计
  6. python的一些解释
  7. 搭建linux环境的tomcat服务器
  8. Pytorch:Tensor和Numpy
  9. Spring Cloud F Spring Boot 2.0 版本升级说明书
  10. 硅谷渐患“大城市”病,世界创新中心或将外移