Debug有感

今天又重复编写了一下九度OJ1461:http://blog.youkuaiyun.com/grooowing/article/details/39827139

出错了,我认为我的代码思路是没问题的,于是就开始DEBUG。痛苦的debug3小时,哎,菜鸟就得这么辛苦。贴出我的DFS代码

bool DFS(int x,int y){//保证处理的都是'.'
	maze[x][y]='X';
	t++;
	//printf("///x,y,t:%d,%d,%d\n",x,y,t);
	//printf("t:%d\n",t);
	for(int i=0;i<4;i++){
		int a=x+go[i][0];
		int b=y+go[i][1];
		if(a<0||b<0||a>=N||b>=M)continue;
		if(maze[a][b]=='X')continue;
		//printf("x,y,a,b,t:%d,%d,%d,%d,%d\n",x,y,a,b,t);//
		if(maze[a][b]=='D'){
			//printf("t:%d\n",t);///
			if(t==T)return true;
			else return false;
		}
		if(maze[a][b]=='.'){
			//printf("a,b,%d,%d",a,b);
			if(DFS(a,b))return true;
			//return false;
		}
	}
	t--;
	maze[x][y]='.';
	return false;
}
三小时之后找到了错误(上面是错误代码)

错误在于判断maze[a][b]=='D'这里,里面else return false;绝对是没有考虑清楚。这一行应该改成else continue;

因为这个a,b不行还要继续看下一个a,b呢。return false之后你让别的a,b怎么活。。

这里给出两点反思。

1,编写代码是,要考虑清楚每一步究竟做了什么事,是不是按着自己的意图来的;

2,debug是,首先反思自己思路是否正确,然后在逐一排错。尤其要注意return 这个词,这个词会结束后续所有工作,是否会影响?而且,return前是否需要重置某些变量?比如最后一个return前t--等操作。

这题还要注意类型是否正确,char maze[][],而不是int....





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值