最长连续递增子序列-JAVA小题
此过程是根据别人写的然后模仿写的,大体思路一样,所以并无新意,只是接收输入我的似乎有点新意 ~
题目如下:
代码如下:
package 递归基础小题;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
/**
* @author 邓雪松 (づ ̄ 3 ̄)づ)
* @create 2021-10-28-17-39
*/
public class 最长连续递增子序列 {
public static void main(String[] args) throws IOException {
System.out.println("请输入总序列的长度:");
Scanner sc = new Scanner(System.in);
int z = sc.nextInt();
int[] s = new int[z];
int j = 0;
System.out.println("请依次输入序列元素-元素之间用空格空开:");
for (int i = 1; i <= 2*z-1; i++) {
if(i%2==0){
continue;
}else{
s[j++]=sc.nextInt();
}
}
//输出一下看看存进数组中的数是否正确
for (int i = 0; i < s.length; i++) {
System.out.print(s[i]+"\t");
}
int max=0,count=0,ss=0,x=0,y=0;
for (int i = 0; i < z-1; i++) {
y=i+1;//判断是否递增,是的话count++
if(s[i+1]>s[i]){
count++;
if(count>max){
max=count;
ss=x;
}
}else{
count=0;//计数重置
x=y;//不连续递增,则索引改变为下一个目标
}
}
System.out.println("\n最长递增子序列为:");
for (int i = ss; i <=ss+count; i++) {
if(i==(ss+count)){
System.out.print(s[i]);
}else {
System.out.print(s[i]+" ");
}
}
}
}
运行结果如下:
请输入总序列的长度:
11
请依次输入序列元素-元素之间用空格空开:
1 2 3 4 5 6 7 8 9 10 11
1 2 3 4 5 6 7 8 9 10 11
最长递增子序列为:
1 2 3 4 5 6 7 8 9 10 11
完 ~