题目:1077. Kuchiguse (20)
这里提供两种方法:
方法一注意事项;
1.word数组长度开大一点,否则出现段错误(200时会出现段错误)
2.用getchar吃掉\n不要用fflush(stdin)
solve1:
#include <stdio.h>
#include <string.h>
struct line
{
char line[500];
int last;
}s[101];
int main()
{
int n,i;
scanf("%d",&n);
getchar();
for(i=0;i<n;i++)
{
gets(s[i].line);
s[i].last=strlen(s[i].line)-1;
}
char word[300];
int j=0;
i=1;
while(1)
{
char v=s[0].line[s[0].last--];
while(i<n&&s[i].last>=0&&s[i].line[s[i].last--]==v)++i;
if(i==n)word[j++]=v;
else break;
i=1;
if(s[0].last<0)break;
}
if(!j)printf("nai");
while(j)printf("%c",word[--j]);
return 0;
}
————————————————
solve2
#include <stdio.h>
#include <string.h>
int main()
{
int n,mini=9999,tag=1,i;
char s[300];
scanf("%d",&n);
getchar();
gets(s);
while(--n)
{
char cur[300];
gets(cur);
int ls=strlen(s)-1,lc=strlen(cur)-1;
while(ls>=0&&lc>=0&&s[ls]==cur[lc])
{
ls--;lc--;
};
int len=strlen(s)-ls-1;
if(!len)
{
printf("nai");
tag=0;break;
}
if(mini>len)mini=len;
}
if(tag)
for(i=strlen(s)-mini;i<strlen(s);i++)
printf("%c",s[i]);
printf("\n");
return 0;
}