迷宫3--快速求解任意两点之间一条路,并不是最短(dfs)

//求一个矩形中任意两点之间的随便一条路(8个方向)+记录路径 dfs #include "stdio.h" #include "math.h" #include "string.h" #include "stdlib.h" #include "time.h" int mark[1000][1000],savex[1000],savey[1000],minx[1000],miny[1000]; int count,thex,they,tag,cur,n,m,flag,lencur; double len,lenmin; int dir[16]={1,0,0,1,-1,0,0,-1,1,1,1,-1,-1,1,-1,-1}; void DFS(int x,int y,int cur) { int i; if(x==thex&&y==they) { flag=1;tag=1; lenmin=0; for(i=0;i=0&&x+dir[2*i]<=m-1&&y+dir[2*i+1]>=0&&y+dir[2*i+1]<=n-1&&!mark[x+dir[2*i]][y+dir[2*i+1]]) { mark[x+dir[2*i]][y+dir[2*i+1]]=1; savex[cur]=x+dir[2*i];savey[cur]=y+dir[2*i+1]; DFS(x+dir[2*i],y+dir[2*i+1],cur+1); mark[x+dir[2*i]][y+dir[2*i+1]]=0; } } } int main() { int i,j,a,b; printf("请输入矩阵的规模n,m:"); while(scanf("%d %d",&n,&m)!=EOF) { flag=0;count=0;lenmin=999999;tag=0; srand((unsigned) time(NULL)); memset(mark,0,sizeof(mark)); for(i=0;i

 

你可能感兴趣的:(算法)