Алгоритм нахождения наибольшей общей последовательности
Подскажите пожалуйста построил алгоритм, преподаватель сказал что в нем ошибка, подскажите в чем может быть проблема? Так же по его словам не правильный рисунок выводит.
#include <string>
#define max(a,b) ((a>b) ? a : b)
using namespace std;
int** c;
string** b;
void LCS_Length(string x, string y)
{
int m = x.length();
int n = y.length();
c= new int* [m + 1];
for (int i = 0; i <= m; i++) c[i] = new int[n + 1];
b = new string* [m + 1];
for (int i = 0; i <= m ; i++) b[i] = new string[n + 1];
for (int i = 1; i <= m; i++) c[i][0] = 0;
for (int j = 0; j <= n; j++) c[0][j] = 0;
for(int i =1; i<=m; i++)
for (int j = 1; j <= n; j++)
{
if (x[i-1] == y[j-1]){
c[i][j] = c[i - 1][j - 1] + 1;
b[i][j]="\\";
}
else if (c[i - 1][j] >= c[i][j - 1]){
c[i][j] = c[i-1][j];
b[i][j] = "^";
}
else{
c[i][j] = c[i][j - 1];
b[i][j] = "<";
}
}
}
void print_LCS(string x, int i, int j)
{
if (i == 0 || j == 0) return;
if (b[i][j] == "\\"){
print_LCS(x, i - 1, j - 1);
cout << x[i-1];
} else if (b[i][j] == "^") print_LCS(x, i - 1, j);
else print_LCS(x, i, j - 1);
}
int main(){
string x = "BDABABC";
string y = "ADBCBA";
LCS_Length(x, y);
for (long unsigned int i = 0; i <= x.length(); i++){
for (long unsigned int j = 0; j <= y.length(); j++) cout << c[i][j] << " ";
cout << endl;
}
for (long unsigned int i = 0; i <= x.length(); i++){
for (long unsigned int j = 0; j <= y.length(); j++) cout << b[i][j] << " ";
cout << endl;
}
print_LCS(x, x.length(), y.length());
return 0;
}