#include #include using std::cout; using std::vector; #define MATCH 1 #define MISMATCH -1 #define GAP -2 int max(int i, int j) { if (i>=j) return i; else return j; } int computeAlign(const char * x, const char * y, vector >& scoremat, vector >& pointermat) { int m=strlen(x)+1; int n=strlen(y)+1; //init scoremat for (int i=0; i >& pointermat, int i, int j, vector& v) { if (i!=0 || j!=0) { if (pointermat[i][j]==1) { trackAlign(pointermat, i-1, j, v); v.push_back(1); } else if (pointermat[i][j]==2) { trackAlign(pointermat, i-1, j-1, v); v.push_back(2); } else { trackAlign(pointermat, i, j-1, v); v.push_back(3); } } } void printAlign(const char * x, const char * y, const vector& v) { for (int i=0; i > scoremat(m, vector(n, 0)); vector > pointermat(m, vector(n, 0)); cout<<"\n\nthe score of the alignment is "< v; trackAlign(pointermat, m-1, n-1, v); printAlign(x, y, v); }