normalmente non mi intrometto in discussioni accademiche... però considerando la mia oramai giurassica esperienza universitaria, quando ti appioppavano esercizi del genere normalmente volevano che venissero risolti usando meno "cose pronte" possibile.
In altre parole, inizializzi un array di "generose" dimensioni: il caso peggiore del tuo esercizio è che vi sia un'alternanza di true e false, che corrisponderebbe ad un array del genere:
codice:
V = {R, C, 1, -1, 1, -1, ... -1};
ovvero di dimensioni
Quindi, parti con l'inizializzare un array di dimensioni dim, che poi potrai andare a trimmare all'abbisogna
codice:
int[] V = new int[M.length*M[0].length+2];
altro "segreto" di int[] è che se ti limiti ad inizializzare un array, la JVM setta tutti gli elementi a 0, cosa che puoi sfruttare in seguito per determinare la dimensione "ottimale" dell'array V