Pagini recente » Cod sursa (job #1915149) | Cod sursa (job #2106042) | Cod sursa (job #1584802) | Cod sursa (job #869429) | Cod sursa (job #536648)
Cod sursa(job #536648)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define Max(a, b) (a) > (b) ? (a) : (b)
int main(int argc, char **argv)
{
int a[1025], b[1025], r[1025], m, n, p = 0, i, j, aux, nr = 0;
FILE *in = fopen("cmlsc.in", "r");
FILE *out = fopen("cmlsc.out", "w");
fscanf(in, "%d %d", &m, &n);
//printf("%d %d\n", m , n);
for (i = 1; i <= m; i++)
fscanf(in, "%d", &a[i]);
for (i = 1; i <= n; i++)
fscanf(in, "%d", &b[i]);
int l[m+1][n+1];
for (i = 0; i <= m; i++)
l[i][0] = 0;
for (j = 0; j <= n; j++)
l[0][j] = 0;
for (i = 1; i <= m; i++)
for (j = 1; j <= n; j++)
{
if(a[i] == b[j])
l[i][j] = l[i - 1][j - 1] + 1;
else
l[i][j] = Max(l[i - 1][j], l[i][j - 1]);
if (l[i][j] > nr)
{
r[p++] = a[i];
nr = l[i][j];
}
}
//for (i = 1; i <= m; i++)
//{
// for (j = 1; j <= n; j++)
// printf("%d ", l[i][j]);
// printf("\n");
//}
fprintf(out, "%d \n", p);
for (i = 0; i < p; i++)
fprintf(out, "%d ", r[i]);
fflush(stdin);
getchar();
fclose(in);
fclose(out);
return 0;
}