gpt4 book ai didi

c - 致命信号 11 退出状态

转载 作者:太空宇宙 更新时间:2023-11-04 00:03:07 24 4
gpt4 key购买 nike

该代码在在线判断中给出了致命信号 11 状态,尝试了随机测试用例,包括 main 中的数组,并且还全局声明但没有用。我知道它的段错误但无法调试它。它适用于较小的测试用例。

#include<stdlib.h>
#include<stdio.h>
char a[1101][1101];
int main()
{
long long int t,m,n;
scanf("%lld",&t);
while(t--)
{
long long int count;
count=0;
scanf("%lld %lld",&m,&n);
//char a[1001][1001];
long long int l;
for(l=0;l<m;l++)
{
scanf("%s",&a[l]);


}
long long int i,j,p=0,b[1101],d[1101],lolo=0,locale=1;
while(locale==1)
{
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(a[i][j]=='r')
{
b[p]=i;
d[p]=j;
p++;
}
}
}
//printf("%d\n",p);
for(i=0;i<p;i++)
{
if(a[b[i]-1][d[i]]=='f' && b[i]>=1 && d[i]>=0)
{
a[b[i]-1][d[i]]='r';
lolo=1;
}
if(a[b[i]][d[i]+1]=='f' && d[i]<n-1)
{
a[b[i]][d[i]+1]='r';
lolo=1;
}
if(a[b[i]][d[i]-1]=='f' && d[i]>0)
{
a[b[i]][d[i]-1]='r';
lolo=1;
}
if(a[b[i]+1][d[i]]=='f' && b[i]<m-1)
{
a[b[i]+1][d[i]]='r';
lolo=1;
}
}
//printf("%d lol \n",lolo);
for(i=0;i<p;i++)
{
b[i]=0;
d[i]=0;
}
p=0;
if(lolo==0)
{
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(a[i][j]=='f')
{
count=-1;
locale=-1;
}
}
}
locale=-1;
}
count++;
lolo=0;
}
printf("%lld\n",count-1);
//printf("%d 00 \n",t);
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
a[i][j]='\0';
}
}
}
return 0;
}

最佳答案

a 是一个二维数组,您正在使用行读取它

 scanf("%s",&a[l]);

如果你想把每个字符串存储在不同的行中,那么你需要做

 scanf("%s",a[l]);

因为它是一个二维数组,a[l] 意味着它只被解除引用一次,并且它给出每一行的起始地址。

关于c - 致命信号 11 退出状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34838534/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com