int main (void) { std::vector<int> A = { 10, 22, 9, 33, 21, 50, 41, 60 }; auto lis = longest_increasing_subsequence(A); std::cout << lis << std::endl; return 0; }
int bidirection_subsequence(int *s, int n, int& idx) { //序列s长度为n+1,下标从1到n,空出0位置 //返回序列s的最长双向子序列的长度,以及这个元素的下标idx int length(0); for(int i = 1; i <= n; ++ i) { int lft = longest_increasing_subsequence(s, 1, i); int rgt = longest_decreasing_subsequence(s, i, n); if(length < lft + rgt) length = lft + rgt - 1, idx = i; } return(length); }
int main() { int max=0; char str[100]; printf("String : "); scanf("%s", str); max = longest_increasing_subsequence(str); printf("Length of longest increasing subsequence : %d\n", max); return max; }
int main() { const int MAXN = 100010; static int array[MAXN], array_size; static int tail[MAXN], tail_size; for (; EOF!=scanf("%d", &array_size); ) { for (int i=0; i < array_size; ++i) { scanf("%d", &array[i]); } longest_increasing_subsequence( array, array_size, tail, tail_size); printf("%d\n", tail_size); } return 0; }
int main(int argc, char *argv[]) { int i, result; int output[9]; int input[9] = { 1,2,1,5,2,4,6,7,3 }; for (i=0; i<9; i++) printf("%d ", input[i]); printf("\n"); result = longest_increasing_subsequence(input, 9, output); printf("result: %d\n", result); for (i=0; i<result; i++) printf("%d ", output[i]); return EXIT_SUCCESS; }
int main() { int A[SIZE]; int i; gen_values(A, SIZE); /* DEBUG */ for (i = 0; i < SIZE; ++i) printf("%d ", A[i]); printf("\n"); int len = longest_increasing_subsequence(A, SIZE); printf("Length of LIS: %d\n", len); return 0; }
int main(){ int arr[] = { 10, 22, 9, 33, 21, 50, 41, 60 }; int n = sizeof(arr)/sizeof(arr[0]); printf("Length of LIS is %d\n", longest_increasing_subsequence( arr, n ) ); { char X[] = "AGGTAB"; char Y[] = "GXTXAYB"; int m = strlen(X); int n = strlen(Y); printf("Length of LCS is %d\n", longest_common_subs( X,m, Y, n) ); } { int cost[5][5] = { {1, 2, 3}, {4, 8, 2}, {1, 5, 3} }; printf("\n%d ", min_cost(cost, 2, 2)); } { int arr[] = {1, 2, 5}; int m = sizeof(arr)/sizeof(arr[0]); int n = 11; printf("\ncoin change : %d ", coin_change(arr, m, n)); } { int val[] = {60, 100, 120}; int wt[] = {10, 20, 30}; int W = 50; int n = sizeof(val)/sizeof(val[0]); printf("\n%d", knapsack(wt, W, val, n)); } { char seq[] = "GEEKS FOR GEEKS"; printf ("\nThe lnegth of the LPS is %d", longest_palindromic_subs(seq)); } { int arr[] = {1, 5, 8, 9, 10, 17, 17, 20}; int size = sizeof(arr)/sizeof(arr[0]); printf("\nMaximum Obtainable Value is %d\n", cut_rod(arr, size)); } { int arr[] = {1, 101, 2, 3, 100, 4, 5}; int n = sizeof(arr)/sizeof(arr[0]); printf("\nSum of maximum sum increasing subsequence is %d\n", max_increasing_subs( arr, n ) ); } { int arr[] = {0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15}; int n = sizeof(arr)/sizeof(arr[0]); printf("\nLength of LBS is %d\n", bitonic_subs( arr, n ) ); } { char str[] = "ababbbabbababa"; printf("Min cuts needed for Palindrome Partitioning is %d", min_pal_partition(str)); } { int arr[] = {1, 3, 6, 1, 0, 9}; int size = sizeof(arr)/sizeof(int); printf("\nMinimum number of jumps to reach end is %d ", min_jumps(arr,size)); } { int n = 150; printf("\n%d ugly number is : %d",n,find_nth_ugly(n)); } { int M[6][5] = {{0, 1, 1, 0, 1}, {1, 1, 0, 1, 0}, {0, 1, 1, 1, 0}, {1, 1, 1, 1, 0}, {1, 1, 1, 1, 1}, {0, 0, 0, 0, 0}}; print_max_square(M,6,5); } { char str[] = "forgeeksskeegfor"; printf("\nLength is: %d\n", print_longest_pal( str ) ); } return 0; }