二维数组的最大联通子数组和
设计题目:求一个二维数组的连通的数组中和最大的最大值。
设计思路:
建立二维数组并遍历二维数组,将所有正整数分块,验证是否联通,如果不联通,判断路径。
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
二维数组的最大联通子数组和相关推荐
- smarty二维foreach示例[顺代一维数组],再次加强版
2019独角兽企业重金招聘Python工程师标准>>> smarty二维foreach示例[顺代一维数组],再次加强版 WEB2.0 root 2009-4-9 10:46 ...
- 算法学习-零子数组,最大连续子数组
题目 对于长度为N的数组A,求连续子数组的和最接近0的值. 如: 数组A:1,-2,3,10,-4,7,2,-5 它是所有子数组中,和最接近0的是哪个? 算法流程 申请比A长1的空间sum[-1,0, ...
- 二维数组中最大连通子数组
题目: 输入一个二维整形数组,数组里有正数也有负数. 求所有子数组的和的最大值. 解决思路: 因为最大连通子数组必定是包含整数最多的区域,所以首先找到整数分布的区域,再将各个区域连接起来,判断是否最大 ...
- 结对项目——最大联通子数组
返回整数数组的最大联通子数组 一.程序要求 1.输入一个二维整形数组,数组中有正数也有负数. 2.求所有子数组的和的最大值,要求时间复杂度为O(n). 3.程序要使用的数组放在一个叫input.txt ...
- java 二维链表_Java数据结构与算法----数组与链表
数据类型 1 数据类型介绍 数据类型的分类(按照结构划分):线性结构和非线性结构 线性结构:线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系 线性结构有两种不同的存储结构,即顺序 ...
- 课堂作业:返回一个二维整数组中最大子数组的和
要求: 1.输入一个二维整形数组,数组里有整数也有负数. 2.二维数组中连续的一个子矩阵组成一个子数组,每个子数组都有一个和. 3.求所有子数组的和的最大值.要求时间复杂度为O(n). 结对编程要求: ...
- 51nod 1213 二维曼哈顿距离最小生成树 树状数组+最小生成树
Description 二维平面上有N个坐标为整数的点,点x1 y1同点x2 y2之间的距离为:横纵坐标的差的绝对值之和,即:Abs(x1 - x2) + Abs(y1 - y2)(也称曼哈顿距离). ...
- C语言基础知识之define宏定义表达式,undef,内存对齐,a和a的区别,数组知识点,int (*)[10] p,二维数组参数与二维指针参数,函数指针数组,常见的内存错误及对策
一.用define宏定义表达式 1.定义一年有多少秒: #define SEC_A_YEAR 60*60*24*365 //上述描述不可靠,没有考虑到在16位系统下把这样一个数赋给整型变量的时候可能会 ...
- HDU6681 二维偏序计算贡献值 树状数组 离散化
http://acm.hdu.edu.cn/showproblem.php?pid=6681 交点个数加1就是答案 使用二维偏序计算横竖射线的交点 #include <bits/stdc++.h ...
最新文章
- Windows下Git push or pull免输入密码设置
- Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Scale/Scale的Command)
- OpenGL混合功能实例
- HDU - 4565 So Easy!(共轭构造+推公式+矩阵快速幂)
- Linux root用户无法打开Chrome或则chromium(kali)
- php函数相关函数,PHP数组相关函数汇总
- scheme解释器 C语言实现,使用Scala写了个简单的Scheme解释器
- 【C++深度剖析教程6】C++之友元
- (vue基础试炼_04)使用组件改造TodoList
- OJ系统原理与实现:Python自动化测试另一个Python程序功能是否正确
- webrtc自动增益
- redis作用_Java高级架构笔记——实现故障恢复自动化:详解Redis哨兵技术
- HTML5七夕情人节表白网页制作【蓝色3D动态相册】HTML+CSS+JavaScript 程序员表白3D相册代码 html生日快乐祝福网页制作
- 数据库开源项目_开源项目贴纸库
- centos7系统详细安装步骤
- 类似微信聊天 日期算法(转换)
- SOLO: Segmenting Objects by Locations 论文学习
- Discuz论坛 创始人密码忘记解决办法!
- 判断点是否在图形(矩形、椭圆、多边形)内的算法(一)
- 51单片机汇编学习笔记4——子函数
热门文章
- ssm框架下web项目,web.xml配置文件的作用(详解)
- egg 编码规范_从 Egg.js 到 NestJS,爱码客后端选型之路
- linux集群组建和管理,Redis集群搭建与管理
- cuda 图片拆分_急需,PDF怎么拆分啊?
- 在plc中用c语言实现电梯控制程序,三菱FX2N PLC电梯运行控制程序设计
- python的一些解释
- 搭建linux环境的tomcat服务器
- Pytorch:Tensor和Numpy
- Spring Cloud F Spring Boot 2.0 版本升级说明书
- 硅谷渐患“大城市”病,世界创新中心或将外移