Witam. Bawię się sobie różnymi algorytmami i natrafiłem na problem. Chcę wypełnić tabelkę tak jest to pokazane tutaj http://pl.wikipedia.org/wiki/Nwp#Algorytm_odtwarzaj.C4.85cy_NWP . Problem w tym że po wypełnieniu tabelki wygląda ona tak:
Co robię źle? Kod:
import java.io.IOException;
public class Testy
{
public static void main(String[] args) throws IOException
{
String A = "babab";
String B = "abaabbaaa";
int n = A.length()+1;
int m = B.length()+1;
int[][] C = new int[n][m];
for (int i=1;i<n;i++)
{
for (int j=1;j<m;j++)
{
if (A.charAt(i-1) == B.charAt(j-1))
C[i][j] = C[i-i][j-1]+1;
else
C[i][j] = Math.max(C[i-1][j], C[i][j-1]);
}
}
///////// kod wyswietlajacy tabelke, brzydki ale pisany na szybko /////////////
// wyswietl znaki ciagu 'abaabbaaa'
System.out.print(" ");
for(int i=0;i<B.length();i++)
System.out.print(B.charAt(i)+" ");
System.out.print("\n ");
//////
int znak_A=0;
for (int i=0;i<n;i++)
{
for (int j=0;j<m;j++)
{
if (i==0) // jesli to pierwszy wiersz to wyswietl same zera
System.out.print(C[i][j]+" ");
else if (j==0) // jesli to pierwsza kolumna to wyswietl znak o indeksie znak_A, ciagu 'babab' oraz zero
{
System.out.print(A.charAt(znak_A)+" "+C[i][j]+" ");
znak_A++; // nastepny element ciagu 'babab'
}
else // dla pozostalych elementow tabeli
System.out.print(C[i][j]+" ");
}
System.out.println();
}
}
}