Az alábbi letöltési lehetőségek közül választhatsz: (
segítség)
Típus: text/plain
Tartalmaz szöveget
Karakterkódolás: utf-8
Méret: 1 KB
class mirror {
private int MH = 1000;
private String szo;
private int maxh[][] = new int[MH][MH];
private int opt;
private String opts;
mirror(String s){
szo = new String(s);
for(int i = 0; i < MH; i++){
for(int j = 0; j < MH; j++){
maxh[i][j] = -1;
}
}
}
public int f(int k, int v){
if(maxh[k][v]>=0){
return maxh[k][v];
} else {
if( k > v){
maxh[k][v]=0;
return 0;
} else if( k == v){
maxh[k][v]=1;
return 1;
} else {
if(szo.charAt(k)==szo.charAt(v)){
maxh[k][v] = 2+f(k+1,v-1);
return maxh[k][v];
} else {
int opt1 = f(k+1,v);
int opt2 = f(k,v-1);
if(opt1 < opt2){
maxh[k][v]=opt2;
return opt2;
} else {
maxh[k][v]=opt1;
return opt1;
}
}
}
}
}
public String g(int k, int v){
if(k > v){
return "";
} else if( k == v){
return szo.substring(k,k+1);
} else if(szo.charAt(k)==szo.charAt(v)){
return szo.substring(k,k+1)+g(k+1,v-1)+szo.substring(k,k+1);
} else if(maxh[k+1][v] > maxh[k][v-1]){
return g(k+1,v);
} else {
return g(k,v-1);
}
}
public String toString(){
return szo;
}
public void solve(){
opt = f(0,szo.length()-1);
opts = new String(g(0,szo.length()-1));
}
public void ki(){
System.out.println("A leghosszabb rész-palindrom hossza "+opt);
System.out.println("A leghosszabb rész-palindrom: "+opts);
}
public static void main(String arg[]){
mirror m = new mirror(arg[0]);
System.out.println(m);
m.solve();
m.ki();
}
}