上下交替在我的脚本通过“迷宫”找到路径

1视图(30天)
代币文件夹是连接!(. zip)
这个脚本的目的是发现如果一个路径1的底部和顶部行之间。由直线组成的路径,没有对角线。
脚本的概念
迷宫:
0 1 1 0 1 1 0(路径是由大胆)
0 1 0 0 0 0 0
0 1 1 1 1 0 0
0 0 0 0 1 0 0
1 1 0 1 1 0
1 0 1 1 1 0 0
1 1 0 0 0 0 0
启动步骤:
最后一行搜索值等于1,然后改变这些进2的。
循环步骤:
现在扫描上面的行值等于1,附在2的值。(如病毒)
现在扫描左和右的这些新2的附加到这些其他1,并将这些转化为2的差异。
0 1 1 0 1 1 0
0 1 0 0 0 0 0
0 1 1 1 1 0 0
0 0 0 0 1 0 0
2 2 2 0 1 1 0
2 0 1 1 1 0 0
2 2 0 0 0 0 0
上面可以看到我们现在遇到点只有0以上,所以脚本应该下降。
我无法找到一种有效的方式在我的上下交替脚本,所以它不断寻找新的1与2的。
我一直挣扎在这个特定的问题已经超过5个小时,我真的很心烦。
任何帮助大大aprecciated !

接受的答案

梅格诺亚
梅格诺亚 2020年1月10日
这里有一个解决方案发现路径连接的顶部网格使用4-neighbors底部
clc
关闭所有
清晰的所有
迷宫= [
0 1 1 0 1 1 0;
0 1 0 0 0 0 0;
0 1 1 1 1 0 0;
0 0 0 0 1 0 0;
1 1 1 0 1 1 0;
1 0 1 1 1 0 0;
1 1 0 0 0 0 0];
神奇的= bwlabel(迷宫,4);
(纽约,nx) =大小(惊人的);
统计= regionprops(神奇,“PixelList”);
iblob = 1:长度(统计)
%检查如果路径有一个像素在第一行和最后一行的像素
如果((min(统计(iblob) .PixelList (:, 2)) = = 1) & &
(max(统计(iblob) .PixelList(:, 2)) = =纽约))
disp ([“成功:路径”num2str (iblob)连接顶部和底部。]);
神奇的(惊人的= = iblob) = 10 * iblob;
其他的
%路径失败
神奇的(惊人的= = iblob) = 0;
结束
结束
npaths =总和(独特的(惊人的))1;
disp ([“[发现”num2str (npaths)“迷宫的路径。”]);
令人惊异的
打印出的解决方案
成功:1连接的道路顶部和底部。
(发现9迷宫的路径。
神奇的=
0 10 10 0 0 0 0
0 10 0 0 0 0 0
0 10 10 10 10 0 0
0 0 0 0 10 0 0
10 10 10 0 0
10 0 10 10 10 0 0
10 10 0 0 0 0 0
1评论
传说
传说 2020年1月10日
“神奇的”哈哈哈,不错的一个。
谢谢你很多的帮助!

登录置评。

更多的答案(0)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!