Need Help with Activity Selection using Dynamic Programming

Give a dynamic program solution for activity selection, below code works for some cases only

 public int findCompatibleActivities(int[] start, int[] finish, int totalActivities) {

        int[][] ca = new int[totalActivities][totalActivities];
        for(int i=0;i<totalActivities;i++) {
            ca[i][i] = 1;
        }

        for(int length=2;length<=totalActivities;length++) {
            for(int i=0;i<totalActivities-length+1;i++) {
                int j = i+length-1;
                int k = j;
                ca[i][j] = 0;
                while(finish[i]<finish[k]) {
                    if((i!=k?finish[i]<=start[k]:true) && (k!=j? finish[k] <= start[j] : true)
                        && ((k-1<0?0:ca[i][k-1])+(k+1>j?0:ca[k+1][j])+1>ca[i][j])) {
                        ca[i][j] = (k-1<0?0:ca[i][k-1])+(k+1>j?0:ca[k+1][j])+1;
                    }
                    k=k-1;
                }

            }
        }
        return ca[0][totalActivities-1];
    }

It works for start = [1,3,0,5,3,5,6,8,8,2,12] and finish = [4,5,6,7,9,9,10,11,12,14,16]
but not for start = [1,3,0,5,3] and finish = [4,5,6,7,9]

Can any one help with what i'm missing here? Thank you!

Comments (0)