如果在任何时刻,算法都能对它已经读入的数据给出子序列问题的正确答案,具有这种特性的算法叫做联机算法。仅需要常量空间并以线形时间运行的联机算法几乎是完美的算法。
一个经典的问题:求最大子序列和的算法就是这样一个完美的算法,给定一个数组(不妨设为整形),求出一个子序列,使得子序列中的元素之和为最大。例如 {4,3,-8,2,6,-2,1},则 {2,6} 子序列即为所求。
这个问题有很多种算法可以解决,但是最好的是一个线形时间常量空间的联机算法,算法如下:
java 代码
- int maxSubSum (int[] a, int size)
- {
- int maxSum = 0, thisSum = 0;
- int start = 0, end = 0;
-
- for ( int j = 1; j <= size; j++ )
- {
- thisSum += a[j-1];
-
- if (thisSum > maxSum)
- {
- maxSum = thisSum;
- end = j;
- }
- else if (thisSum < 0)
- {
- thisSum = 0;
- maxSum = 0;
- start = j + 1;
- }
- }
-
- System.out.println(“最大子序列从第” + start + “个元素到第” + end + “个元素”);
- System.out.println("最大子序列和为“ + maxSum);
-
- return maxSum;
- }
-
可以看出这个算法是线形时间O(N)的,且只对数据进行一次扫描,一旦a[j]被读入并被处理,它就不需要再被记忆。因此如果数组在磁盘或磁带上,它就可以被顺序读入,在主存中不必存储数组的任何部分。所以这个算法是一个几乎完美的联机算法。
分享到:
相关推荐
《手机象棋蓝牙联机游戏算法详解》 在数字化时代,传统的象棋游戏也逐渐转移到了移动设备上,其中手机象棋蓝牙联机游戏凭借其便捷性和互动性,深受玩家们的喜爱。本文将深入探讨实现此类游戏的核心算法以及相关技术...
C 最大子序列问题的几中算法-分治-联机算法
Java实现SM4算法和基于SM4算法的联机消息认证码(MAC)计算涉及了密码学中的重要概念和技术。SM4算法,全称为国家商用密码算法SM4,是中国国家标准GB/T 32905-2016《信息安全技术商用密码算法SM4 Block Cipher》中...
文章选自《河南职技师院学报》1999年12月刊,主要目的是通过对不同排序算法进行联机实验,分析这些算法在实际运行中的性能表现,特别是关注它们的耗时情况。这对于理解各种排序算法的实际应用效果、评估算法效率以及...
算法方面,文章提到了两种主要的处理半平面交的方法:联机算法和分治算法。 1. **联机算法**: 这种方法首先初始化一个包含整个平面的区域A,然后逐一用直线切割A,只保留那些满足不等式ax + by + c >= 0的区域。...
### 联机手写字符识别算法研究 #### 一、课题背景与意义 随着信息技术的飞速发展,汉字识别技术作为模式识别领域中的一个重要分支,因其强大的社会需求而得到了快速的发展。尤其在联机手写汉字识别领域,这项技术...
《多核处理器上的并行联机分析处理算法研究》这篇论文深入探讨了在当前计算机硬件技术,特别是多核处理器发展的背景下,如何优化并行联机分析处理(OLAP)算法以提升数据立方体计算的性能。随着硬件技术的快速发展,...
OLAP(联机分析处理)是一种数据仓库技术,用于快速、稳定、一致地访问和分析多维数据,以满足决策支持或多维环境下的特定查询和报表需求。OLAP的概念是由关系数据库之父E.F. Codd在1993年提出的,他认识到联机事务...
总的来说,使用C#实现联机五子棋项目不仅能够锻炼你的编程技能,还能让你熟悉网络编程、图形界面设计和游戏算法等多个方面的知识。通过这个项目,你将深入理解C#的强大功能,并能构建出一个具有实际应用价值的多玩家...
4. **高精度**:软件内置的高级算法保证了加工精度,减少因人为因素导致的误差。 5. **自动化程度**:能够自动化处理复杂的切割路径,节省了人工编程的时间和精力。 二、联机助手的关键组件: 1. **联机助手.exe*...
【Python实现的可人机可联机五子棋游戏】是一种用Python编程语言开发的交互式棋类游戏,特别适合初学者和爱好者学习与娱乐。这款游戏不仅提供了与计算机对战的单人模式,还支持玩家间进行在线对弈,极大地增加了游戏...
在C++编程环境下实现联机字符识别,开发者通常会利用图像处理和机器学习算法。以下是关于这一主题的一些关键知识点: 1. **图像预处理**:首先,我们需要将捕获的字符图像进行预处理,包括二值化、去噪、平滑、边缘...
《基于遗传算法和BP神经网络的多联机阀类故障诊断》 该研究主要探讨了在变制冷剂流量系统(Variable Refrigerant Flow System,简称VRF系统)中,如何通过结合遗传算法(Genetic Algorithm,GA)和反向传播神经网络...
本文首先阐述了国内外各种主流的字符识别算法原理,随后在综合了各类算法的优缺点之后提出了一种基于调节因子的图像手写字符分割识别算法。该算法首先对待识别的字符图像进行区域分割操作,分割字符区域和背景区域...
【支持AI和联机的俄罗斯方块】是一个在Shell环境下实现的高级版本的俄罗斯方块游戏,它不仅包含了经典游戏的基本玩法,还引入了人工智能(AI)和在线联机对战的功能,使得游戏体验更加丰富和多元。接下来,我们将...
【标题】"Wuziqi.rar_java联机五子棋_五子棋联机JAVA_联机五子棋java" 指的是一款基于Java语言开发的五子棋游戏,具备在线对战和单人模式的功能。这个项目可能是为了学习和实践Java编程,特别是网络编程和游戏逻辑...
文档内容讲述了基于位编码的联机分析处理(OLAP)及数据挖掘算法的研究。OLAP技术通常被用于数据仓库和决策支持系统(DSS)中,以实现快速的多维数据分析和查询。数据挖掘则是从大量数据中发现有价值信息的过程,它...
在IT行业中,开发一款联机五子棋游戏涉及到多个关键知识点,这包括但不限于网络编程、游戏逻辑、用户界面设计以及并发处理。以下是对这些知识点的详细说明: 1. **网络编程**:联机游戏的核心是网络通信。开发者...
在联机版中,这些算法需要在服务器端和客户端之间进行同步,确保所有玩家看到的迷宫状态一致。 2. **用户界面**:JavaScript结合HTML和CSS创建游戏界面,包括游戏地图、角色动画、提示信息等。使用Canvas或WebGL...
在程序实现中,这通常通过数据结构(如二维数组)来存储当前的游戏状态,并提供一系列的算法来检查填写的合法性。 2. **Java编程语言**:这个数独游戏是用Java编写的,Java是一种广泛使用的面向对象的编程语言,以...