注意输入的dataz应是一个矩阵,只有0 0.5 ,0是可以走的路,0.5代表不可以走的障碍。
function deep_find(data)%% 表示从左上角寻路到右下角。
[n l]=size(data)%%行和列 a=[];%标记是否走过 pos=[1,1]; a=data a(1,1)=1; isend=0; f(); %% function f() state=0 heatmap(a) colormap('hot') drawnow pause(0.01); if((pos(1)==l&&pos(2)==n)||isend==1) isend=1; return; end while(state<4) if(isend==1) break; end switch(state) case 0 if(pos(1)<n)
if(a(pos(1)+1,pos(2))==0) pos(1)=pos(1)+1; a(pos(1),pos(2))=1; f(); a(pos(1),pos(2))=0; pos(1)=pos(1)-1; end end state=state+1; case 1 if(pos(2)<n) if(a(pos(1),pos(2)+1)==0) pos(2)=pos(2)+1; a(pos(1),pos(2))=1; f(); a(pos(1),pos(2))=0; pos(2)=pos(2)-1; end end state=state+1; case 2 if(pos(1)>1) if(a(pos(1)-1,pos(2))==0) pos(1)=pos(1)-1; a(pos(1),pos(2))=1; f(); a(pos(1),pos(2))=0; pos(1)=pos(1)+1; end end state=state+1; case 3 if(pos(2)>1) if(a(pos(1),pos(2)-1)==0) pos(2)=pos(2)-1; a(pos(1),pos(2))=1; f(); a(pos(1),pos(2))=0; pos(2)=pos(2)+1; end end state=state+1; end end end end
输入data为MAP=[1 0 0 0 0;
0 0.5 0 0.5 0.5;
0 0 0.5 0 0.5 ;
0.5 0 0 0 0;
0 0 0 0.5 0;
0 0 0.5 0.5 0;
]
deep_find(MAP)
有以下的效果

d
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删