How to determine the longest increasing subsequence using dynamic programming?

前端 未结 19 2719
醉梦人生
醉梦人生 2020-11-22 10:55

I have a set of integers. I want to find the longest increasing subsequence of that set using dynamic programming.

19条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-11-22 11:25

    O(n^2) java implementation:

    void LIS(int arr[]){
            int maxCount[]=new int[arr.length];
            int link[]=new int[arr.length];
            int maxI=0;
            link[0]=0;
            maxCount[0]=0;
    
            for (int i = 1; i < arr.length; i++) {
                for (int j = 0; j < i; j++) {
                    if(arr[j]maxCount[i])){
                        maxCount[i]=maxCount[j]+1;
                        link[i]=j;
                        if(maxCount[i]>maxCount[maxI]){
                            maxI=i;
                        }
                    }
                }
            }
    
    
            for (int i = 0; i < link.length; i++) {
                System.out.println(arr[i]+"   "+link[i]);
            }
            print(arr,maxI,link);
    
        }
    
        void print(int arr[],int index,int link[]){
            if(link[index]==index){
                System.out.println(arr[index]+" ");
                return;
            }else{
                print(arr, link[index], link);
                System.out.println(arr[index]+" ");
            }
        }
    

提交回复
热议问题