最长连续递增子序列-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

完 ~

posted @ 2021-10-28 18:42  ╰(‵□′)╯  阅读(120)  评论(0编辑  收藏  举报