i got the code for this problem but not able to find where i am wrong
my problem is as follows

Given an array of numbers, find the longest subsequence whose elements grow monotonically:
1 4 8 2 5 7 3 6 => 1 4 5 7
1 4 8 2 5 7 3 6 7 => 1 4 5 6 7
1 4 8 2 3 7 4 6 => 1 2 3 4 6
that is we must form subsets and find which is longest among them
as showed in the above example

#include<iostream.h>
#include<conio.h>

int maxRank (int curr, int* arr, int* rank) {
    int max = 0 ;
    for (int i = 0; i <= curr; i++) {
        if (arr[i]<arr[curr] && rank[i]>rank[max]) {
            max = i ;
        }
    }

    return max ;
}

void printReverse (int curr, int* arr, int* back) {
    if (curr == 0) return ;
    printReverse (back[curr], arr, back) ;
    cout << arr[curr] << " " ;
}

void longestMonotoneSubsequence (int count, int* arr) {
    int* back = new int[count] ;
    int* rank = new int[count] ;
    int max = 0 ;
    rank[0] = 0, back[0] = 0 ;
    for (int i = 0; i <= count; i++) {
        back[i] = maxRank (i, arr, rank) ;
        rank[i] = rank[back[i]]+1 ;
        if (rank[i] > rank[max]) {
            max = i ;
        }
    }

    printReverse (max, arr, back) ;
    cout << "\n" ;
    delete rank, back ;
}

void main()
{
int n;
int a[100];
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
longestMonotoneSubsequence(n,&a);
}

Recommended Answers

All 5 Replies

Sorry, my post recalled...

can u send me the link !!!

so that i can refer

ok
can u correct me where am i going wrong

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.