Pagini recente » Cod sursa (job #730171) | Cod sursa (job #2735234) | Cod sursa (job #1045524) | Cod sursa (job #1157647) | Cod sursa (job #58343)
Cod sursa(job #58343)
#include<stdio.h>
#include<string.h>
#define lgmax 1000000
long lg,rez;
char*s= new char[lgmax];
void citire()
{
FILE*f=fopen("pscpld.in","r");
fscanf(f,"%s",s);
lg=strlen(s);
fclose(f);
}
int palindrom(long inceput,long sfarsit)
{
while(inceput<sfarsit)
{
if (s[inceput]!=s[sfarsit]) return 0;
sfarsit--; inceput++;
}
return 1;
}
void dinamic()
{
long i,j,nrmin;
long*nrp=new long[lgmax];
for(i=0;i<lg;i++)
if (palindrom(0,i)) nrp[i]=1;
else
{
nrmin=lgmax+2;
for(j=0;j<i;++j)
if (palindrom(j+1,i)&&nrp[j]<nrmin)
nrmin=nrp[j];
nrp[i]=nrmin+1;
}
rez=nrp[lg-1];
}
int main()
{
citire();
dinamic();
FILE*g=fopen("pscpld.out","w");
fprintf(g,"%ld",rez+lg);
return 0;}