DFS(深度优先搜索)
代码:
#include<bits/stdc++.h>
using namespace std;
int m, n, p, q, minn = 99999999;
int a[100][100];//1为空,2为障碍
int v[100][100];//0未访问,1已访问
int dx[4] = {0,1,0,-1};
int dy[4] = {1,0,-1,0};// 设置遍历方向
void dfs(int x, int y, int step) {
if (x == p && y == q) {
if (step < minn)
minn = step;
return;// 回溯
}
//顺时针试探
for(int k=0;k<=3;k++){
int tx,ty;
tx = x+dx[k];
ty = y+dy[k];
if(a[tx][ty]==1 && v[tx][ty]==0){
v[tx][ty]=1;
dfs(tx,ty,step+1);
v[tx][ty]=0;
}
}
return;
}
int main(){
int startx,starty;
cin>>m>>n;
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
cin>>a[i][j];
cin>>startx>>starty>>p>>q;
v[startx][starty] = 1;
dfs(startx,starty,0);
cout<<minn<<endl;
return 0;
}
测试案例:/*
5 4
1 1 2 1
1 1 1 1
1 1 2 1
1 2 1 1
1 1 1 2
1 1 4 3
*/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】