//--------------------------------------------------------------------------- #include "corr.hh" #define MAXPATH 256 #define min(x,y) ((xy)?(x):(y)) int Corr::ed(int i,int j) { if(i==-1) return j+1; if(j==-1) return i+1; if(i==-2 || j==-2) return n+1; if(X[i]==Y[j]) return H2[i-1][j-1]; if(X[i-1]==Y[j] && X[i]==Y[j-1]) return 1+min(H2[i-2][j-2],min(H2[i][j-1],H2[i-1][j])); return 1+min(H2[i-1][j-1],min(H2[i][j-1],H2[i-1][j])); /* if(X[i]==Y[j]) return H[(i-1)+2][(j-1)+2]; if(X[i-1]==Y[j] && X[i]==Y[j-1]) return 1+min(H[(i-2)+2][(j-2)+2],min(H[(i)+2][(j-1)+2],H[(i-1)+2][(j)+2])); return 1+min(H[(i-1)+2][(j-1)+2],min(H[(i)+2][(j-1)+2],H[(i-1)+2][(j)+2])); */ } int Corr::cuted(int j) { int l=max(0,j-t); int u=min(m,j+t); int ce=j+t; for(int k=l;k<=u;k++) { if(H2[k][j]0) j--; else more=0; while(more && !continued(path[j])); state=path[j]+1; } return count; } //---------------------------------------------------------------------------