Pagini recente » Cod sursa (job #1395422) | Cod sursa (job #91628) | Cod sursa (job #2679961) | Cod sursa (job #1678934) | Cod sursa (job #676109)
Cod sursa(job #676109)
#include<cstdio>
#include<limits>
using namespace std;
int i,n,m;
int recursiv(int n,int m)
{int i,j,b,l,q,r;
if (n==0&&m==0)
return a+b;
else
{
if(l[n][m]!=l[n-1][m]&&l[n][m]!=l[n][m-1])
{
q[r]=a[n];
k++;
r++;
n--;
m--;
}
else
if(l[n][m]==l[n-1][m])
a=recursiv(n-1,m);
if(l[n][m]==l[n][m-1])
b=recursiv(n,m-1);
}}
int main()
{
int v[256],a[256],l[256][256],q[256];
int j,r=1,k=0;
FILE* f=fopen("subsir.in","r");
FILE* g=fopen("subsir.out","w");
fscanf(f,"%d",&n);
fscanf(f,"%d",&m);
for(i=1;i<=n;++i)
fscanf(f,"%d",&a[i]);
for(i=1;i<=m;++i)
fscanf(f,"%d",&v[i]);
for(i=0;i<=n;++i)
for(j=0;j<=m;++j)
l[i][j]=0;
for(i=1;i<=n;++i)
for(j=1;j<=m;++j)
if(a[i]==v[j])
{
l[i][j]=l[i-1][j-1]+1;
}
else
{
if(l[i-1][j]>l[i][j-1])
l[i][j]=l[i-1][j];
else
l[i][j]=l[i][j-1];
}
r--;
fprintf(g,"%d \n",recursiv(n,m));
for(i=r;i>=1;--i)
fprintf(g,"%d ",q[i]);
}