DFS及洛谷P1605迷宫题解

本文介绍了作者学习DFS算法的心路历程,通过解析洛谷P1605迷宫问题的解题思路,强调了在DFS搜索中正确标记和回溯的重要性。作者在实现过程中遇到的一个细节问题是起点的状态标记,未正确处理会导致答案错误。最后,作者预告了将分享参加吉比特高校游戏开发大赛的作品和参赛经验。

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

 

意识到自己很菜已经很久了,今天终于下定决心要把DFS跟BFS好好学一下。虽然已经决定走游戏开发的道路了,但是无论如何,算法都是不能落下的一课。

关于BFS跟DFS的定义,网上已经有很多非常详细的解法了,这里也就不在啰嗦。下面看例题,是洛谷的P1605。上题目。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5q2m55Sw5pm05rW3,size_20,color_FFFFFF,t_70,g_se,x_16

 

首先题目是非常经典的迷宫例题,唯一的不同在于,要求每个位置都必须只走一遍。很容易想到用dfs搜索,如果达到终点,那么就把方案总和++。同时我们需要确认当前每一个位置的状态,如果当前位置已经被遍历,那么我们需要把当前位置做好标记,同时需要回溯到最初的状态,来寻找新的路径。

代码如下: 

#include<bits/stdc++.h>
using namespace std;

int s[10][10],v[10][10];
int n,m,t,startx,starty,endx,endy,sum=0;
int dx[]={1,0,-1,0};
int dy[]={0,1,0,-1};
void dfs(int x,int y){
	if(x==endx&&y==endy){
		sum++;
		return;
	}
	else{
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

武田晴海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值