二维数组求和 团队开发

题目:返回一个二维整数数组中最大联通子数组的和。

要求: 输入一个二维整形数组,数组里有正数也有负数。 求所有子数组的和的最大值。要求时间复杂度为O(n)。

开发方式:团队开发

主要思路:二维连通数组求最大子数组,我们在这里主要运用了降维的思想,主要是通过将二维数组转化为一维数组求最大子数组的思想,在项目中定义一个算法,用于实现一行连续数组的最大子数组,并用p q记录最大子数组的起始结束位置下标。在主函数中利用for循环实现二维数组每一行最大子数组的求和,在利用循环实现最大子数组的连接,添加对单独正数据的判断,从而实现连通的最大子数组问题。

代码如下

import java.util.Scanner;public class Test
{static int q=0,p=0;static Scanner str=new Scanner(System.in);public static void main(String args[]){int m1=0,m2=0;	int max=0;int sum=0;System.out.println("输入二维数组的行列数");m1=str.nextInt();m2=str.nextInt();int [][]a=new int[m1][m2];int []b=new int[m2];int []left=new int[m2];int []right=new int[m2];int []t=new int[m2];for (int i = 0; i < m1; i++){for (int j = 0; j < m2; j++){a[i][j]=str.nextInt();  }}for (int i = 0; i<m1; i++)//求每一行最大子数组{for (int j = 0; j<m2; j++)  {      b[j] = a[i][j];   } sum = findmax(m1, b, p, q);    left[i] = p;     //记录最大子数组的坐标位置right[i] = q;    t[i] = sum;}max = t[0];for (int i = 0; i + 1<m2; i++)//将最大子数组合并{if (left[i] <= right[i + 1] && right[i] >= left[i + 1])//两行的最大子数组块相连{max += t[i + 1];}for (int j = left[i]; j<left[i + 1]; j++){if (a[i + 1][j]>0)max += a[i + 1][j];                   //判别独立正数}}System.out.println("最大子数组和为:"+max); }	public static int findmax(int n,int a[],int p, int q ){int []b=new int[a.length+1]; b[a.length]=0;int sum1=0;int max1=0;for(int i=0;i<n;i++){if(sum1<0){sum1=a[i];}else{sum1=sum1+a[i];}b[i] = sum1;}max1=b[0];for(int i=0;i<n;i++){if(max1<b[i]){max1=b[i];q=i;}}for(int i=q;i>=0;i--){if(b[i]==a[i]){p=i;break;}}return max1;}	
}

 

转载于:https://www.cnblogs.com/yuezhihao/p/6679699.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/488646.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

rpc协议微服务器,RPC协议及实现方式(分布式微服务治理的核心)

分布式微服务治理的核心在于: 微服务和分布式(微服务框架)微服务的最优技术实现目前是: SpringBoot(RPC 框架)分布式的最优技术实现目前是: Thrift,Motan,Dubbo,Spring Cloud(Netflix OSS),Finagle,gRPCRPC 是什么RPC 的全称是 Remote Procedure Call &#xff0c;是一种进程间…

2019年度全球工程前沿研究报告

来源&#xff1a;JAS自动化学报英文版1. 工程研究前沿1.1 Top 10 工程研究前沿发展态势信息与电子工程领域 Top 10 工程研究前沿涉及电子科学与技术、光学工程与技术、仪器科学与技术、信息与通信工程、计算机科学与技术、控制科学与技术等学科方向。其中&#xff0c;“面向光互…

python取数字第一位数_python基础:8.切片和缩进

0.前言如果可以的话&#xff0c;请先关注&#xff08;专栏和账号&#xff09;&#xff0c;然后点赞和收藏&#xff0c;最后学习和进步。你的支持是我继续写下去的最大动力&#xff0c;个人定当倾囊而送&#xff0c;不负所望。谢谢&#xff01;&#xff01;&#xff01;1.前提基…

python图像_Python图像处理库(PIL)

Python Imaging Library为您的python程序添加图像处理能力。这个库提供广泛的文件格式支持、高效的内部表示和相当强大的图像处理能力。 核心图像库是为快速访问几种基本像素格式图像设计的。它能为一般的图像处理工具提供一个可靠的基础。 这个Pythonic library可以 装载和保存…

在JS中如何判断所输入的是一个数、整数、正数、非数值?

1、判断是否为一个数字&#xff1a; Number&#xff08;num&#xff09;不为 NaN&#xff0c;说明为数字 2、 判断一个数为正数&#xff1a; var numprompt("请输入&#xff1a;");if(Number(num)>0){document.write("您输入的是一个正数&#xff01;")…

怎么开通手机信息服务器,如何用手机建立网站

如何用手机建立网站 内容精选换一换本文以营销版网站配置为例&#xff0c;介绍如何通过云速建站服务快速创建一个网站。云速建站操作简单方便&#xff0c;只需四步&#xff0c;就可以轻松创建一个网站。建站流程开通网站&#xff1a;包括购买营销版站点、购买精美模板(可选)和安…

cmd测试cuda安装_安装:anaconda+cuda+pytorch+pycharm

每次安装都要在网上各种搜索&#xff0c;为了下次安装的时候简单一点&#xff0c;把对我安装帮助较大的链接整理了一下&#xff0c;整个过程仅供参考&#xff1a;除了pycharm&#xff0c;其他位置均不建议更改默认位置&#xff0c;建议全程可开着cmd1、anaconda安装直接下载&am…

AI会完美的执行我们设定的目标,但这不是一个好消息

来源&#xff1a;混沌巡洋舰导读&#xff1a; 科普网站quanta magazine上一篇名为 Artificial Intelligence Will Do What We Ask. That’s a Problem的文&#xff0c;是关于AI与人际交互时&#xff0c;如何满足更好的理解人类需求。该文的核心观点是&#xff1a;通过教机器理解…

浏览器 刷新页面后回到顶部_推荐 3 个实用的 chrome 浏览器扩展

The Great Suspender同时打开太多的网页会极大的消耗电脑系统资源。The Great Suspender 会把长时间不用的网页冻结&#xff0c;从而释放被这些网页占据的内存和 CPU。扩展安装完成后&#xff0c;会自动跳出设置界面。你可以设置「多久后自动冻结标签」&#xff0c;建议选择一个…

[游戏开发-学习笔记]菜鸟慢慢飞(12)- Unity3D中LitJson 解析遇到的问题

1.数据格式问题 问题&#xff1a;服务器那边设置的HP的类型是float&#xff0c;如果传给客户端的是1000&#xff0c;没有小数点解析的时候LitJson会优先按照int去解析。但是呢&#xff0c;服务器回头还有可能传回的是1000.50这样带小数点的。我们写死解析对应的数据类型&#x…

华为服务器更换主板后怎么进系统,服务器更换主板

服务器更换主板 内容精选换一换华为云帮助中心&#xff0c;为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档&#xff0c;帮助您快速上手使用华为云服务。如果弹性负载均衡实例使用的证书过期或者其它原因需要更换&#xf…

圆弧半径计算图解_刀尖圆弧半径补偿G40,G41,G42 左补偿右补偿你真的能搞清楚吗...

当编写数控轨迹代码时&#xff0c; 一般是以刀具中心为基准。 但实际中&#xff0c; 刀具通常是 圆形的&#xff0c;刀具中心并不是刀具与加工零件接触的部分&#xff0c; 所以刀具中心的的轨迹应 偏离实际零件轨迹一个刀具半径的距离。 简单的将零件外形的轨迹偏移一个刀具 半…

python tensorflow多个输入_十分钟带你入门最新Python的AI库TensorFlow 2.0

去年11月&#xff0c;TensorFlow庆祝了它的第三个生日。多年来&#xff0c;它成为最受欢迎的ML 框架之一&#xff0c;并拥有了大量的粉丝。TensorFlow庆祝了它的第三个生日谷歌将这个框架融入Java&#xff0c;C &#xff0c;JavaScript&#xff0c;最重要的是融入主要的数据科学…

人脑为何能够快速学习新知识? 用AI的视角来分析

来源&#xff1a;混沌巡洋舰相比机器&#xff0c;人脑擅长快速的跨任务学习和泛化推理&#xff0c; 或者说叫做卓越的元学习能力。我们说人类站立在这个迅速变化的危险世界面前&#xff0c;快速适应新任务的元学习能力事关生死。这种能力是目前的深度学习人工智能所完全不具备的…

Redis学习笔记之Redis的对象

类型与编码&#xff1a; typedef struct redisObject { unsigned type&#xff1a;4&#xff1b;//类型 unsigned encoding:4;//编码 void *ptr;//指向底层实现数据结构的指针 } robj; 1.字符串对象 编码&#xff1a; int&#xff0c;整数值&#xff0c;而且这个整数值可以用lo…

lwip协议栈实现服务器端主动发送,lwip协议栈源码详解说明 - 全文

1、LWIP的结构lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。LWIP(Light weight internet protocol)的主要模块包括&#xff1a;配置模块、初始化模块、Nef模块、mem(memp)模块、…

中希尔排序例题代码_超全面分析十大排序算法

点击上方“零一视界”&#xff0c;选择“星标”公众号资源干货&#xff0c;第一时间送达作者 | 不该相遇在秋天责编 | 程序员小吴前言本文全长 14237 字&#xff0c;配有 70 张图片和动画&#xff0c;和你一起一步步看懂排序算法的运行过程。预计阅读时间 47 分钟&#xff0c;强…

eslint规范_代码规范化之Vue篇

写在前面代码规范化的重要性不在这里展开了。这一篇讲了Vue项目下如何做代码规范化的事情&#xff0c;主要涉及了eslint、prettier、huskylint-staged、onchange、editorConfig这几个角色。另外&#xff0c;虽然配置限于Vue项目&#xff0c;但整个思路也可以作为其他项目代码规…

maven常用插件功能

maven-dependency-plugin http://maven.apache.org/plugins/maven-dependency-plugin/ maven-dependency-plugin最大的用途是帮助分析项目依赖&#xff0c;dependency:list能够列出项目最终解析到的依赖列表&#xff0c;dependency:tree能进一步的描绘项目依赖树&#xff0c;de…

人类为什么不会被人工智能取代?

来源&#xff1a;人机与认知实验室〔摘要〕文章旨在对人工智能的技术本质进行分析&#xff0c;以回应为什么人类不会被人工智能取代的问题。通过历史分析的方法&#xff0c;以“器官投影说”等技术哲学思想作为分析工具&#xff0c;回顾了人工智能技术的历程。发现在理论上&…