/** Problem Statement: -* Find Longest Alternating Subsequence* A sequence {x1, x2, .. xn} is alternating sequence if its elements satisfy one of the following relations :x1 < x2 > x3 < x4 > x5 < .... xn orx1 > x2 < x3 > x4 < x5 > .... xn*/import java.io.*;public class LongestAlternatingSubsequence {/* Function to return longest alternating subsequence length*/static int AlternatingLength(int arr[], int n){/*las[i][0] = Length of the longestalternating subsequence ending atindex i and last element isgreater than its previous elementlas[i][1] = Length of the longestalternating subsequence ending atindex i and last element issmaller than its previouselement*/int las[][] = new int[n][2]; // las = LongestAlternatingSubsequencefor (int i = 0; i < n; i++)las[i][0] = las[i][1] = 1;int result = 1; // Initialize result/* Compute values in bottom up manner */for (int i = 1; i < n; i++){/* Consider all elements as previous of arr[i]*/for (int j = 0; j < i; j++){/* If arr[i] is greater, then check with las[j][1] */if (arr[j] < arr[i] && las[i][0] < las[j][1] + 1)las[i][0] = las[j][1] + 1;/* If arr[i] is smaller, then check with las[j][0]*/if( arr[j] > arr[i] && las[i][1] < las[j][0] + 1)las[i][1] = las[j][0] + 1;}/* Pick maximum of both values at index i */if (result < Math.max(las[i][0], las[i][1]))result = Math.max(las[i][0], las[i][1]);}return result;}public static void main(String[] args){int arr[] = { 10, 22, 9, 33, 49,50, 31, 60 };int n = arr.length;System.out.println("Length of Longest "+"alternating subsequence is " +AlternatingLength(arr, n));}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。