Pagini recente » Cod sursa (job #2577369) | Cod sursa (job #417681) | Cod sursa (job #757603) | Cod sursa (job #1393673) | Cod sursa (job #37855)
Cod sursa(job #37855)
#include <cstdio>
#include <string>
#include <cstdlib>
#include <algorithm>
#define maxn 2005
using namespace std;
short a[maxn][maxn];
char x[maxn], y[maxn];
int n;
void afis(int i, int j)
{
if(i==0 || j==0) return;
if(x[i]==y[j]) afis(i-1, j-1);
else
{
if(a[i-1][j]>a[i][j-1]) afis(i-1, j);
else afis(i, j-1);
}
if(x[i]==y[j]) printf("%c", x[i]);
}
int main()
{
char ax[maxn];
int i, j;
freopen("elimin2.in", "r", stdin);
gets(ax);
//puts(ax);
n=strlen(ax);
for(i=0;i<n;i++) x[i+1]=ax[i], y[i+1]=ax[i];
reverse(y+1, y+n+1);
//for(i=1;i<=n;i++)printf("%c", x[i]);
//printf("\n");
// for(i=1;i<=n;i++) printf("%c", y[i]);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(x[i]==y[j]) a[i][j]=a[i-1][j-1]+1;
else a[i][j]=max(a[i-1][j], a[i][j-1]);
//printf("\n");
freopen("elimin2.out", "w", stdout);
afis(n, n);
printf("\n");
//printf("%d\n", a[n][n]);
return 0;
}