diff --git a/cs677/pa2/sequential.cc b/cs677/pa2/sequential.cc index 2e0d24b..364c405 100644 --- a/cs677/pa2/sequential.cc +++ b/cs677/pa2/sequential.cc @@ -62,36 +62,37 @@ void similarityMatrix(vector & s, vector & t) { int s_size = s.size(); int t_size = t.size(); - int F[s_size+1][t_size+1]; + int (*F)[s_size+1][t_size+1] = + (int (*)[s_size+1][t_size+1]) new int[(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 */ - F[0][i] = 0; + (*F)[0][i] = 0; for (int i = 0; i <= s_size; i++) /* set first column to 0's */ - F[i][0] = 0; + (*F)[i][0] = 0; for (int i = 1; i <= s_size; i++) { for (int j = 1; j <= t_size; j++) { /* Compute the value for the matrix */ - F[i][j] = + (*F)[i][j] = max( max( - F[i][j-1] - 2, - F[i-1][j-1] + (eq(s[i-1], t[j-1]) ? 1 : -1) + (*F)[i][j-1] - 2, + (*F)[i-1][j-1] + (eq(s[i-1], t[j-1]) ? 1 : -1) ), max( - F[i-1][j] - 2, + (*F)[i-1][j] - 2, 0 ) ); /* See if we found a new maximum value */ - if (F[i][j] > max_val) + if ((*F)[i][j] > max_val) { - max_val = F[i][j]; + max_val = (*F)[i][j]; max_x = i; max_y = j; } - else if (F[i][j] == max_val) + else if ((*F)[i][j] == max_val) { /* If we found a value the same as our current maximum * value, see if it has a greater i+j value */ @@ -116,4 +117,5 @@ void similarityMatrix(vector & s, vector & t) #endif cout << "Maximum value is " << max_val << " at position (" << max_x << ", " << max_y << ")" << endl; + delete[] F; }