784 - Maze Exploration-Runtime Error 的悲剧坑
怎么说呢,这道题坑死我啦,虽然很水,但我发现我更水
。我竟然无数次Runtime Error...
原因很简单,我也希望借此得个教训:Runtime Error这个一般也就这些错误——访问越界或者开辟的空间不够。而且对于bfs而言,这个栈的大小开多大还是很需要注意的
我其实就犯了这个错误,但无奈我聪明的认为38*88<250
,于是,我疯了。
#include
#include
#include
#define u 127
char str[38][88];///记录输入
int long_[38];///记录每行的长度
int stack[2500];///我肯定脑子被昨天的僵尸吃掉了。。。
int hang;///记录总行数
int dir[4][2]={1,0,0,1,-1,0,0,-1,};///方向数组
/**
深搜法,网上一般用这个,偶也不知道为什么
*/
void dfs(int x, int y)
{
int i,nx,ny;
str[x][y]='#';
for(i=0;i<4;i++){
nx=x+dir[i][0];
ny=y+dir[i][1];
if(nx>=0 && ny>=0 && nx
=0 && ny>=0 && nx
=0;j--){
if(str[i][j]=='*'){
recordx=i;
recordy=j;
break;
}
}
if(recordx>=0){
break;
}
}///找到遍历的起始点‘*’
bfs(recordx,recordy);
for(i=0;i<=hang;i++){
printf("%s\n",str[i]);
///最后一行“_______...”别忘了
}
}
return 0;
}

本文讲述了在解决UVa784 - Maze Exploration问题时遇到的Runtime Error问题,作者通过自己的错误经验提醒读者,Runtime Error通常由数组访问越界或内存不足引起,特别是使用宽度优先搜索(BFS)时,需要谨慎设定栈的大小。作者由于误判了所需空间,导致程序出错。

1535

被折叠的 条评论
为什么被折叠?



