UVa784 - Maze Exploration-Runtime Error 的悲剧坑

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;
}




      
     
    
   
  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值