Pagini recente » Cod sursa (job #1360372) | Cod sursa (job #2502632) | Cod sursa (job #2162738) | Cod sursa (job #2194841) | Cod sursa (job #3285233)
#include <stdio.h>
#include <stdlib.h>
#define MAXN 1000
int m[MAXN + 1][MAXN + 1];
char a[MAXN + 1];
char b[MAXN + 1];
int maxi(int a, int b, int c)
{
if (a >= b && a >= c)
{
return a;
}
else if (b >= a && b >= c)
{
return b;
}
return c;
}
int main()
{
FILE *fin, *fout;
fin = fopen("subsir.in", "r");
fout = fopen("subsir.out", "w");
int N, M, i, j;
char c;
i = 0;
c = fgetc(fin);
while (c != '\n')
{
a[++i] = c;
c = fgetc(fin);
}
N = i;
i = 0;
c = fgetc(fin);
while (c != '\n' && c != EOF)
{
b[++i] = c;
c = fgetc(fin);
}
M = i;
for (i = 1; i <= N; i++)
{
for (j = 1; j <= M; j++)
{
if (a[i] == b[j])
{
m[i][j] = maxi(m[i - 1][j - 1] + 1, m[i - 1][j], m[i][j - 1]);
}
else
{
m[i][j] = maxi(m[i - 1][j - 1], m[i - 1][j], m[i][j - 1]);
}
}
}
fprintf(fout, "%d", m[N][M]);
fclose(fin);
fclose(fout);
return 0;
}