C语言 运行错误
程序代码:#include<stdio.h>
#include<string.h>
int main()
{
int m,n,t,i,k,l,ok,j;
char s[1001],head[20000],tail[20000];
scanf("%d",&m);
while(m--)
{
scanf("%d",&n);
i=0;
for(j=0;j<n;j++)
{
scanf("%s",s);
t=strlen(s);
head[i]=s[0];
tail[i]=s[t-1];
i++;
}
ok=0;
for(k=0;k<n;k++)
{
for(l=0;l<n;l++)
{
if(head[k]==tail[l])
{
ok++;
tail[l]='0';
break;
}
}
if(ok==i-1)
break;
}
if(ok==i-1)
{
printf("YES\n");
}
else
printf("NO\n");
}
return 0;
}题目是:
先输入一个数m,表示有m组测试数据;接着输入一个n,表示有n根木棒,接着输入n行字符,(英文小写字母表示木棒,不超过1000个字符),木棒能够连接的条件是:两根木棒的首尾字母相同,比如acm+moj,就可以了(注:kjh+ask也是可以的)。要求测试的n<=100000;
我觉得我的程序没什么问题,可是总是运行错误,求解答?
我知道数组宽度开的不够,可是开了100000,就会出现输出超限的问题,拜托,大家帮帮忙








.