最长的子序列是众所周知的问题,我有一个耐心算法的解决方案.
问题是,我的解决方案给了我"最长的增长序列",而不是出现的第一个最长的增长序列.
不同之处在于序列的某些成员在第一个中的数字较大(但序列长度完全相同).
获得第一个序列的结果比预期的要困难得多,因为拥有最佳序列并不容易转化为具有第一个序列.
我想过做我的算法,然后找到长度为N的第一个序列,但不知道怎么做.
那么,你如何从一系列随机整数中找到第一个增长最长的子序列?
我的代码片段:
public static void main (String[] args) throws java.lang.Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int inputInt;
int[] intArr;
try {
String input = br.readLine().trim();
inputInt = Integer.parseInt(input);
String inputArr = br.readLine().trim();
intArr = Arrays.stream(inputArr.split(" ")).mapToInt(Integer::parseInt).toArray();
} catch (NumberFormatException e) {
System.out.println("Could not parse integers.");
return;
}
if(inputInt != intArr.length) {
System.out.println("Invalid number of arguments.");
return;
}
ArrayList<ArrayList<Integer>> sequences = new ArrayList<ArrayList<Integer>>();
int sequenceCount = 1;
sequences.add(new ArrayList<Integer>());
sequences.get(0).add(0); …Run Code Online (Sandbox Code Playgroud)