算法初级(一)
Java 14 绿色免安装版:
链接:https://pan.baidu.com/s/1cK0uaLeC137-eZdeVnXUvQ
提取码:rkm7
这里推荐个JAVA14的学习网站:https://www.liaoxuefeng.com/wiki/1252599548343744/1255883772263712,安利一下,个人觉得还可以,里面还有其他教程。
今天先看个开胃小菜:
算法设计举例
问题:给定序列A1,A2,A3,A4,...,An,求A1~An,求A1~An的一个任意子序列Ai~Aj,使得Ai~Aj的和最大。例如:整数序列【-2,11,-4,13,-5,2,-5,-3,12,-9的最大子序列之和为21(A2~A9)】
算法一:穷举法
public class TestSeq { static int[] seq = new int[] { -2, 11, -4, 13, -5, 2, -5, -3, 12, -9 }; public static int maxSub_1(int[] seq) { int max = 0; int n = seq.length; int sum = 0; for (int i = 1; i <= n; i++) { for (int j = 0; j < n; j++) { sum = 0; for (int k = j; k < j + i && k < n; k++) { sum += seq[k]; if(sum > max) max = sum; } } } return max; } public static void main(String[] args) { System.out.println(maxSub_1(seq)); } }
运行结果是:21
还有三种方法下次安利,告辞!