在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

Java怎么求一个整型数组中最大连续子序列的和

120次阅读
没有评论

共计 2014 个字符,预计需要花费 6 分钟才能阅读完成。

这篇文章主要介绍“Java 怎么求一个整型数组中最大连续子序列的和”,在日常操作中,相信很多人在 Java 怎么求一个整型数组中最大连续子序列的和问题上存在疑惑,丸趣 TV 小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java 怎么求一个整型数组中最大连续子序列的和”的疑惑有所帮助!接下来,请跟着丸趣 TV 小编一起来学习吧!

/**

动态规划 (Dynamic Programming):

 1) 将待求解的问题分解为若干个子问题 (即: 将求解的过程分为若干阶段),按顺序求解子问题,前一子问题的解,为后一子问题的求解提供了有用的信息;

 2) 在求解任一子问题时,列出可能的局部解,通过决策保留那些有可能达到最优的局部解,丢弃其它的局部解;

 3) 依次解决各子问题,最后一个子问题的解就是初始问题的解。

问题:求一个整型数组中最大连续子序列的和,数组中既包含正整数也包含负整数。

举例:数组 int[] array = {1, -3, 7, 8, -4, 10, -19, 11}; 中最大连续子序列为:7, 8, -4, 10 它们的和为 21

*/

public class DP {
 *  暴力求解
 *
 *  时间复杂度:O(N^2)
 */
public static int maxSubSumByEnum(int[] array) {
 int maxSum = 0;
 int begin = 0;
 int end = 0;
 /**
 * 1) 第 i 次循环结束后可以找到:以第 i 个元素为起点的连续子序列的最大值。 * 2)i 表示序列的起点,j 表示序列的终点。 * 3) 每一次循环中将终点不断向后移动:每次向后移动一位并且计算当前序列的和,循环结束后,我们就可以得到本次循环中子序列和最大的值。 */
 for (int i = 0; i   array.length; i++) { //
 int tempSum = 0;
 for (int j = i; j   array.length; j++) { tempSum += array[j];
 if (tempSum   maxSum) {
 maxSum = tempSum;
 begin = i;
 end = j;
 }
 }
 }
 System.out.println(begin:  + begin +   end:  + end);
 return maxSum;
 *  动态规划
 *
 *  时间复杂度:O(N)
 *
 *  要点: * 1) 若当前阶段中连续子序列的和小于 0,则进入下一阶段,同时确定下一阶段的起点并将下一阶段的和初始化为 0。 * 2) 只有当前阶段的总和大于历史最大总和时,才会去更新数组中最大连续子序列的起点和终点。 */
public static int maxSubSumByDP(int[] array) {
 int maxSum = 0; //  数组中,最大连续子序列的和
 int begin = 0; //  数组中,最大连续子序列的起点
 int end = 0; //  数组中,最大连续子序列的终点
 int tempSum = 0; //  当前阶段中,连续子序列的和
 int tempBegin = 0; //  当前阶段中,连续子序列的起点
 for (int i = 0; i   array.length; i++) { tempSum += array[i];
 if (tempSum   0) { //  若当前阶段中连续子序列的和小于 0,则进入下一阶段
 tempSum = 0; //  下一阶段的和进行归零处理
 tempBegin = i + 1; //  下一阶段的起点
 } else if (tempSum   maxSum) { //  若当前阶段的总和大于历史最大总和,则更新数组中最大连续子序列的起点和终点。 maxSum = tempSum;
 begin = tempBegin;
 end = i;
 }
 }
 System.out.println(begin:  + begin +   end:  + end);
 return maxSum;
public static void main(String[] args) { int[] array = {1, -3, 7, 8, -4, 10, -19, 11};
 int dpMax = maxSubSumByDP(array);
 System.out.println(dpMax);
 int enumMax = maxSubSumByEnum(array);
 System.out.println(enumMax);
}

}

到此,关于“Java 怎么求一个整型数组中最大连续子序列的和”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注丸趣 TV 网站,丸趣 TV 小编会继续努力为大家带来更多实用的文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计2014字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 久久在线视频免费观看 | 深夜免费看片 | 免费看片aⅴ免费大片 | 国产精品国产成人国产三级 | 三级日本高清完整版热播 | 亚洲精品色综合色在线观看 | 伊人久久欧美综合精品 | 国内精品久久久久久久星辰影视 | 欧洲在线观看 | 97国产婷婷综合在线视频 | 无码任你躁久久久久久久 | 亚洲国产精品二区久久 | 国产成人久久综合二区 | 丰满少妇作爱视频免费观看 | 久久se精品一区二区国产 | 毛片网站在线观看 | 亚洲欧美日韩综合一区 | 国产美女精品久久久久中文 | 日本黄色不卡视频 | 少妇富婆高级按摩出水高潮 | 人妻少妇偷人精品无码 | 久久久9视频在线观看 | 91精品国产欧美一区二区 | 亚洲国产天堂在线mv网站 | 成人欧美一区二区三区视频 | 国内自拍99 | 国产自国产自愉自愉免费24区 | 精品无码黑人又粗又大又长 | 欧美电影一区二区三区 | 韩国理论福利片大全在线观看 | 天堂а√在线最新版中文在线 | 小泽玛利亚国产在线视频 | 久久99这里只有精品 | 中文字幕+乱码+中文字幕一区 | 午夜电影网va内射 | 亚洲欧美日韩综合久久 | 性感美女一级毛片 | 一级特级女人18毛片免费视频 | 天天视频国产精品 | 欧美一级电影网站 | 国产精品欧美在线观看 |