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!