rendered paste body public void nussinov(){
int total_max;
int current_max;
int j;
int len = sequence.length();
int index;
for(int k = 5; k<len; k++){
for(int i=0; i<len-k; i++){
j = i+k;
total_max = 0;
index = len;
int var2, var3;
total_max = OPT[i][j-1];
current_max = valid(i,j) + OPT[i+1][j-1];
if(j-i < 4 && current_max > total_max)
index = i;
for(int t=i; t<=j; t++){
if(t < j-4 && valid(t,j) == 1){
try {
var2 = OPT[i][t-1];
} catch (ArrayIndexOutOfBoundsException e) {
var2 = 0;
}
try {
var3 = OPT[t+1][j-1];
} catch (ArrayIndexOutOfBoundsException e) {
var3 = 0;
}
current_max = var2+var3+1;
if(current_max > total_max){
total_max = current_max;
index = t;
}
}
OPT[i][j] = total_max;
if(index < len)
TRC2[j][i] = index;
else
TRC2[j][i] = -1;
}
}
}
}
public void backtrack(int i, int j){
int k;
k = TRC2[j][i];
if(k != -1) {
TRC[k] = "(";
TRC[j] = ")";
System.out.print(" p ");
if( 4 < (j-1)-(k+1) )
backtrack(k+1,j-1);
if (4 < k-1-i )
backtrack(i,k-1);
}
else{ // k==-1
if( 4 < j-1-i )
backtrack(i,j-1);
}
}