解题思路:
注意事项:
参考代码:
#include<stdio.h>
#include<malloc.h>
#include<string.h>
int long_best=0,n;
int * shu_zu, * zhefuc_size;
char * * zhifuc;
int jie_long(int long_wei,int jie)
{
int cd,cds,k,fc;
(zhefuc_size[long_wei]>zhefuc_size[jie]) ? (cd=zhefuc_size[jie]):(cd=zhefuc_size[long_wei]);
k=cd-1;
for(;k>0;k--)
{
cds=k; fc=0;
while(cds>0)
{
if(zhifuc[long_wei][zhefuc_size[long_wei]-cds]!=zhifuc[jie][fc])
{break;}
else{ cds--; fc++;}
}
if(cds==0)break;
}
return k;
}
void pin_long(int long_chan,int long_wei)
{
int i,kfc=0,jj=0;
for(i=0;i<n;i++)
{
if(shu_zu[i]>0)
{
kfc=jie_long(long_wei,i);
if(kfc)
{ shu_zu[i]--;
pin_long(long_chan+zhefuc_size[i]-kfc,i);
shu_zu[i]++;
jj++;
}
}
}
if(jj==0){ if(long_chan>long_best)long_best=long_chan; }
}
void main()
{
int i,long_chan;
char k;
scanf("%d",&n);
shu_zu=(int *)malloc(sizeof(int)*n);
zhifuc=(char **)malloc(sizeof(char *)*n);
zhefuc_size=(int *)malloc(sizeof(int)*n);
for(i=0;i<n;i++)
{ zhifuc[i]=malloc(sizeof(char)*100);
scanf("%s",zhifuc[i]);
shu_zu[i]=2;
zhefuc_size[i]=strlen(zhifuc[i]);
}
scanf("\n%c",&k);
for(i=0;i<n;i++)
{
if(zhifuc[i][0]==k)
{
long_chan=zhefuc_size[i];
shu_zu[i]--;
pin_long(long_chan,i);
shu_zu[i]++;
}
}
printf("%d\n",long_best);
}
0.0分
0 人评分