From abe2707c1f15292b076446d6a2bb27809ce61314 Mon Sep 17 00:00:00 2001 From: josh Date: Sat, 27 Sep 2008 14:22:07 +0000 Subject: [PATCH] fixed sequential to not read extra character and match examples git-svn-id: svn://anubis/gvsu@173 45c1a28c-8058-47b2-ae61-ca45b979098e --- cs677/pa2/sequential.cc | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/cs677/pa2/sequential.cc b/cs677/pa2/sequential.cc index 5c2300f..47e6077 100644 --- a/cs677/pa2/sequential.cc +++ b/cs677/pa2/sequential.cc @@ -44,12 +44,16 @@ bool readFile(char * fileName, vector & v) ifstream in(fileName); if (!in.is_open()) return false; - while (!in.eof()) + for(;;) { char chr; in >> chr; + if (in.eof()) + break; v.push_back(chr); + cout << "0x" << hex << (int) chr << " (" << chr << ") "; } + cout << endl; return true; } @@ -58,22 +62,22 @@ void similarityMatrix(vector & s, vector & t) { int s_size = s.size(); int t_size = t.size(); - int F[s_size][t_size]; + int F[s_size+1][t_size+1]; int max_x = 0, max_y = 0, max_val = 0; - for (int i = 0; i < t_size; i++) /* set first row to 0's */ + for (int i = 0; i <= t_size; i++) /* set first row to 0's */ F[0][i] = 0; - for (int i = 0; i < s_size; i++) /* set first column to 0's */ + for (int i = 0; i <= s_size; i++) /* set first column to 0's */ F[i][0] = 0; - for (int i = 1; i < s_size; i++) + for (int i = 1; i <= s_size; i++) { - for (int j = 1; j < t_size; j++) + for (int j = 1; j <= t_size; j++) { /* Compute the value for the matrix */ F[i][j] = max( max( F[i][j-1] - 2, - F[i-1][j-1] + (eq(s[i], t[j]) ? 1 : -1) + F[i-1][j-1] + (eq(s[i-1], t[j-1]) ? 1 : -1) ), max( F[i-1][j] - 2, @@ -99,17 +103,15 @@ void similarityMatrix(vector & s, vector & t) } } } -#if 0 - cout << "Matrix: " << s_size << " x " << t_size << endl; - for (int i = 0; i < s_size; i++) + cout << "Matrix: " << s_size+1 << " x " << t_size+1 << endl; + for (int i = 0; i <= s_size; i++) { - for (int j = 0; j < t_size; j++) + for (int j = 0; j <= t_size; j++) { - printf("%02d ", F[i][j]); + printf("%2d ", F[i][j]); } printf("\n"); } -#endif cout << "Maximum value is " << max_val << " at position (" << max_x << ", " << max_y << ")" << endl; }