Pagini recente » Cod sursa (job #1605542) | Cod sursa (job #1774647) | Cod sursa (job #2196282) | Cod sursa (job #1805496) | Cod sursa (job #1043571)
#include <stdio.h>
#include <stdlib.h>
FILE *f,*g;
int N,M,C[1030][1030],B[1030][1030],X[1030],Y[1030],i,j;
void printSequence(int B[1030][1030],int len1,int len2)
{
if(len1 == 0 || len2 == 0)
return;
else if(B[len1][len2] == 1)
{
printSequence(B,len1-1,len2-1);
printf("%d ",X[len1]);
}
else if(B[len1][len2] == 2)
printSequence(B,len1,len2-1);
else printSequence(B,len1-1,len2);
}
int main()
{
f = fopen("cmlsc.in","r");
g = fopen("cmlsc.out","w");
fscanf(f,"%d %d",&N, &M);
for(i=1;i<=N;i++)
fscanf(f,"%d",&X[i]);
for(i=1;i<=M;i++)
fscanf(f,"%d",&Y[i]);
for(i=1;i<=N;i++)
for(j=1;j<=M;j++)
{
if(X[i] == Y[j])
{
C[i][j] = C[i-1][j-1] + 1;
B[i][j] = 1;
}
else if(C[i-1][j] > C[i][j-1])
{
C[i][j] = C[i-1][j];
B[i][j] = 3;
}
else {
C[i][j] = C[i][j-1];
B[i][j] = 2;
}
}
printf("%d\n",C[N][M]);
printSequence(B,N,M);
return 0;
}