找到它的一种简单方法是检查每个元素及其后续元素,并将其包含在另一个数组中。但它不是那么清楚。另一种方式是Divide&amp;使用合并排序算法征服方法。在这种情况下,它不应该对数字进行排序,而是在子阵列中递归地划分它们,并且仅合并满足条件n <1的那些数字。的n + 1。但是我不确定合并和检查部分的程序的代码实现。
答案 0 :(得分:1)
可以使用候选阵列上的单次扫描操作来查看连续递增序列的长度。所以伪代码可以如下:
a = [5 1 3 10 5 15 25 35 45 3 4 5];
longest_seq = 1;
temp_sec = 1;
for i =1:size(a)
if a[i-1]<a[i[
temp_sec = temp_sec +1;
else
if(temp_sec > longest_seq )
longest_seq = temp_sec ;
end
temp_sec = 1;
end
end
longest_seq
是您要查找的号码(据我所知)。
答案 1 :(得分:0)
请原谅我,如果我误解了你的问题,但为什么要使用单独的数组,合并,排序等?如果按照我的理解你只是寻找增长元素的最长序列,递归可能是你的朋友。将指向元素N的指针传递给func(n),如果N + 1大于N,则调用N ++,并且调用func(N)再次调用自身(确保不超过数组的边界。
一个简单的解释,但想想你看到我正在开车的东西。