quel problema l'ho risolto ma adesso ne ho un 'altro !
riporto l'esempio che nel post precedente non si vede bene:
esempio:
ho 4 lavori/stringhe:
j1:abcd
j2:bca
j3:cabc
j4:abcd
Matrice risultante:
***j1 j2 j3 j4
j1: -1 2 3 4
j2: 2 -1 2 2
j3: 3 2 -1 3
j4: 4 2 3 -1
quindi per ogni coppia trovo la max lunghezza!!ad esempio tra j1 e j2 la max lunghezza è 2 e inserisco questo valore nella matrice nel rispettivo campo [j1][j2]e proseguofino a riempire la matrice,e infine mi faccio restituire la matrice!!
il codice dal quale esce il risultato è questo:
adesso stampa:codice:public class Matrice { public static int[][] mLunghezzaSottostringa(String[]job){ int[][]matrice; int i,j; int sottostringa=0; /*creo una matrice triangolare inferiore in cui * inserire i valori*/ matrice = new int [job.length][]; for(i=0; i<matrice.length;i++) { matrice[i] =new int[i+1]; } /*confronto le stringhe due per volta*/ for(i=0;i<job.length;i++){ for(j=i+1;i<job.length;j++){ sottostringa= Lcs.longestCommonSubstring(job[i], job[j]); //System.out.println(sottostringa); /*adesso vorrei inserire nella matrice triangolare * -1 sulla diagonale e per ogni riga * i rispettivi valori * scorrendo la matrice inserisco i valori*/ for(i=0; i<matrice.length;i++){ for(j=0;j<matrice[i].length;j++){ if(i==j){/*se l'indice di righa==indice di colonna*/ matrice[i][j]=-1; //System.out.println(matrice[i][j]+""); } else{ matrice[i][j]=sottostringa; } System.out.println(matrice[i][j]+""); } } } } return matrice; } }
-1
2
-1
2
2
-1
2
2
2
-1
che è diverso da quello che io mi aspetto,infatti i valori che mi vengono sono tutti su una colonna e mi vengono tutti di valore 2 dove dovrebbero esserci altri valori,io dovrei avere nella matrice questi valori,visualizzati come sotto:
1° righa :
-1
2° righa
2 -1
3°riha
3 2 -1
4°righa
4 2 3 -1
potete dirmi anche se il codice della matrice triangolare che ho scritto secondo voi è corretto?
spero qualcuno risponda!!grazie

Rispondi quotando