// smc-colonne.c
// << Algorithmique du texte >>
// Maxime Crochemore, Christophe Hancart et Thierry Lecroq
// Vuibert, 2001.
#include <stdio.h>
#include "chl.h"
#define C1(i) c1[(i) + 1]
#define C2(i) c2[(i) + 1]
int *smcColonne(Mot x, Longueur m, Mot y, Longueur n) {
int i, j, *c, *c1, *c2;
c1 = (int *)malloc((m + 2)*sizeof(int));
if (c1 == NULL) error("smcColonne");
c2 = (int *)malloc((m + 2)*sizeof(int));
if (c2 == NULL) error("smcColonne");
for (i = -1; i <= m - 1; ++i) C1(i) = 0; // memset(c1, 0, (m + 1)*sizeof(int));
for (j = 0; j <= n - 1; ++j) {
C2(-1) = 0;
for (i = 0; i <= m - 1; ++i)
if (x[i] == y[j])
C2(i) = C1(i - 1) + 1;
else
C2(i) = MAX(C1(i), C2(i - 1));
c = c1;
c1 = c2;
c2 = c;
}
return(c1);
}