#include <stdio.h>
#include <stdlib.h>
int mark[100][100];//標記:0為未標記,1為標記
int map[100][100];//地圖:1為空,2為障礙
int p,q;//終點行列
int min=99999999999999;
void dfs(int x,int y,int step){
//設定終點
if(x==p&&y==q){
if(step<min){
min=step;
return;//回溯
}
}
//建立順時針方向行走的代碼
//1、右方向
if(map[x][y+1]==1&&mark[x][y+1]==0){
mark[x][y+1]==1;
dfs(x,y+1,step+1);
mark[x][y+1]==0;//回溯
}
//2、下方向
if(map[x+1][y]==1&&mark[x+1][y]==0){
mark[x+1][y]==1;
dfs(x+1,y,step+1);
mark[x+1][y]==0;//回溯
}
//3、左方向
if(map[x][y-1]==1&&mark[x][y-1]==0){
mark[x][y-1]==1;
dfs(x,y-1,step+1);
mark[x][y-1]==0;//回溯
}
//4、上方向
if(map[x-1][y]==1&&mark[x-1][y]==0){
mark[x-1][y]==1;
dfs(x-1,y,step+1);
mark[x-1][y]==0;//回溯
}
return;
}
int main(){
int tx,ty,m,n;
scanf("%d%d",&m,&n);
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
scanf("%d",&map[i][j]);
}
}
scanf("%d%d%d%d",&tx,&ty,&p,&q);
mark[tx][ty]=0;
dfs(tx,ty,0);
printf("%d",min);
return 0;
}
迷宮設計:

運行:

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/85995.html
標籤:C語言
