Pagini recente » Cod sursa (job #2367140) | Cod sursa (job #1438795) | Cod sursa (job #1503278) | Cod sursa (job #2795141) | Cod sursa (job #11185)
Cod sursa(job #11185)
#include<fstream.h>
#include<string.h>
int maxx,nr;
char min[100][15];
void det_min(char s[15],char s1[15])
{int i,j,k,d,gasit;
char sdf[15];
if(!strlen(s))
{if(strlen(s1)>maxx)
maxx=strlen(s1);
return;
}
if(!strlen(s1))
{if(strlen(s)<strlen(min[1]))
{nr=1;strcpy(min[nr],s);}
else
if(strlen(s)==strlen(min[1]))
{for(i=1;i<=nr;i++)
if(!strcmp(min[i],s))
return;
strcpy(min[++nr],s);}
return;
//[++min[0]],s);
}
if(strlen(s)==1)
{s[1]=s1[0];
s[2]=NULL;
det_min(s,s1+1);
return;
}
for(i=0;i<strlen(s)-1;i++)
{for(j=0;j<=i;j++)
sdf[j]=s[j];
sdf[j]=s1[0];
sdf[j+1]=NULL;
strcat(sdf,s+i+1);
do
{gasit=0;
for(d=0;d<strlen(sdf);d++)
{for(j=d+1;sdf[d]==sdf[j];j++);
if(j-d>=3)
{gasit=1;
for(k=d;k<strlen(sdf)-j+d;k++)
sdf[k]=sdf[k+j-d];
sdf[k]=NULL;
break;
}
}
}
while(gasit);
det_min(sdf,s1+1);
}
}
int main()
{char s1[15],s2[15];
int i;
ifstream f("balls.in");
//f>>s1>>s2;
strcpy(s1,"r");
strcpy(s2,"rbrrbbrbrbr");
strcpy(min[1],"12345678901234");
det_min(s1,s2);
ofstream g("balls.out");
if(maxx)
{g<<strlen(s2)-maxx;
g.close();
return 0;
}
g<<nr<<'\n';
for(i=1;i<=nr;i++)
g<<min[i]<<'\n';
g.close();
return 0;
}