Pagini recente » Cod sursa (job #772369) | Cod sursa (job #3155977) | Cod sursa (job #239357) | Cod sursa (job #2348202) | Cod sursa (job #11810)
Cod sursa(job #11810)
#include<fstream.h>
#include<string.h>
int mi=100,nr,min=100;
char c,cc[1000][14],b[100];
void rezolva(char s[14],int k)
{int n,i,j,d,gasit;
char s1[14],c;
if(!strlen(s))
{if(k<mi)
mi=k;
return;
}
if(mi==100)
{ if(strlen(s)<min&&k==strlen(b))
{min=strlen(s);
nr=1;
strcpy(cc[1],s);
}
else if(strlen(s)==min)
{for(d=1;d<=nr;d++)
if(!strcmp(s,cc[d]))
break;
if(d==nr+1)
strcpy(cc[++nr],s); }
}
if(k>=strlen(b))
return;
if(strlen(s)==1)
{s[1]=(b+k)[0];s[2]=NULL;
rezolva(s,k+1);
return;
}
n=strlen(s);
for(i=0;i<strlen(s)-1;i++)
{n=strlen(s);
c=(b+k)[0];
for(j=0;j<=i;j++)
s1[j]=s[j];
s1[j]=c;
for(++j;j<=n;j++)
s1[j]=s[j-1];
s1[j]=NULL;
n++;
gasit=1;
do
{for(j=0;j<n;j++)
{for(d=1;d+j<n&&s1[d+j]==s1[j];d++);
if(d>=3&&j<n)
break;
j=j+d-1;
}
if(j<n)
{for(j=j;j<n-d;j++)
s1[j]=s1[j+d];
s1[j]=NULL;
n=j;
}
else
gasit=0;
}
while(gasit);
rezolva(s1,k+1);
}
}
int main()
{char s[14];
int long i;
ifstream f("balls.in");
f>>s>>b;
rezolva(s,0);
ofstream g("balls.out");
if(mi<100)
{g<<mi;
g.close();
return 0;
}
char aux[14];
int long j;
for(i=1;i<=nr;i++)
for(j=i+1;j<=nr;j++)
if(strcmp(cc[i],cc[j])>0)
{strcpy(aux,cc[i]);
strcpy(cc[i],cc[j]);
strcpy(cc[j],aux);
}
for(i=1;i<=nr;i++)
g<<cc[i]<<'\n';
g.close();
return 0;
}