91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 13KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2021-05-31
  • 語言: Matlab
  • 標簽: matlab??dfs??并查集??

資源簡介

用并查集生成迷宮,用dfs搜索通路,純屬娛樂

資源截圖

代碼片段和文件信息

%@brief:生成迷宮
%@para:?row?:定義行長
%???????col?:定義列長
%???????handles:所傳圖像句柄
%@reval:map:迷宮信息結構體
%@discribe:基于并查集實現
function?map?=?draw_maze(rowcolhandles)

map.row?=?row;
map.col?=?col;
map.set?=?DisjSets(rowcol);%建立并查集
for?i?=?1:row*col?%用來表示連通性,初始時為0?都不連通1234?=?上,下,左,右??
????map.wall(i).sta=zeros(14);
end
?
while??1?????????%不斷考察入口與出口的祖先直到連通為止????
?????opt=randi([14]11);
?????nrow?=?randi([1row]11);%生成1個1到row之間的行數
?????ncol?=?randi([1col]11);%生成1個1到col之間的列數
?????%任意元素可通過以下規律定位:(所在列數-1)*?行數+所在行數
??????cur?=?row*(ncol-1)+nrow;
?????[map.setl_root]=map.set.find(cur);%查找當前
?????switch?opt?
?????????case?1?%向上形成通路
?????????????if??nrow?==?1?%第一行不向上啥也不干
????????????????continue;
?????????????else?
??????????????????up?=??row*(ncol-1)+nrow-1;
?????????????????[map.setr_root]=?map.set.find(up);%查找上一個
?????????????????if??l_root~=r_root?%當前與上鄰居是否連通
????????????????????map.set?=?map.set.union(l_rootr_root);%不連通,合并根節點,合并集合
????????????????????map.wall(cur).sta(1)=1;%%向上連通
????????????????????map.wall(up).sta(2)=1;%向下連通
?????????????????end
?????????????end
?????????case?2?%向下形成通路
?????????????if?nrow?==?row?%啥也不干
???????????????????continue;
?????????????else
??????????????????down?=?row*(ncol-1)+nrow+1;
??????????????????[map.setr_root]=?map.set.find(down);
?????????????????if??l_root~=?r_root?%當前與下鄰居是否連通
?????????????????????map.set?=?map.set.union(l_rootr_root);%不連通,合并根節點,合并集合
?????????????????????map.wall(cur).sta(2)?=?1;%向下連通
?????????????????????map.wall(down).sta(1)=1;%%向上連通
?????????????????end
?????????????end
?????????case?3?%向左形成通路
?????????????if?ncol?==?1%啥也不干
?????????????????continue;
?????????????else
?????????????????left?=?row*(ncol-2)+nrow;
??????????????????[map.setr_root]=?map.set.find(left);
?????????????????if??l_root~=r_root?%當前與左鄰居是否連通
????????????????????map.set?=?map.set.union(l_rootr_root);%不連通,合并根節點,合并集合
?????????????????????map.wall(cur).sta(3)=1;%向左連通
?????????????????????map.wall(left).sta(4)=1;%向右連通
?????????????????end
?????????????end
?????????case?4?%向右形成通路
?????????????if?ncol?==?col%啥也不干
??????????????????continue;
?????????????else
??????????????????right?=?row*(ncol)+nrow;
??????????????????[map.setr_root]=?map.set.find(right);
?????????????????if??l_root?~=?r_root?%當前與右鄰居是否連通
?????????????????????map.set?=?map.set.union(l_rootr_root);%不連通,合并根節點,合并集合
?????????????????????map.wall(cur).sta(4)=1;%向右連通
?????????????????????map.wall(right).sta(3)=1;%向左連通
?????????????????end
?????????????end
?????end
?????[map.setl_root]=?map.set.find(1)?;%再次查找
?????[map.setr_root]=?map.set.find(row*col);
?????if?(l_root?==?r_root)
?????????break;
?????end
end

?%fprintf(‘l_root=?%dr_root=%d\n‘l_rootr_root);

cla;%先清圖層
?
%調用圖像句柄
figure(handles);
map.wall?=?reshape(map.wallrowcol);
map.wall(1).sta(3)?=?1;
map.wall(row*col).sta(4)?=?1;
line([.5col+.5][row+.5row+.5])?%?畫頂邊
line([.5.5][.5row-.5])?%?畫左邊
???for?i=?1:co

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2016-01-10?19:00??迷宮尋徑\
?????目錄???????????0??2016-01-10?12:49??迷宮尋徑\@DisjSets\
?????文件????????1212??2016-01-08?12:46??迷宮尋徑\@DisjSets\DisjSets.m
?????目錄???????????0??2016-01-10?12:49??迷宮尋徑\@Stack\
?????文件????????1661??2016-01-10?11:38??迷宮尋徑\@Stack\Stack.m
?????文件????????3799??2016-01-10?09:36??迷宮尋徑\draw_maze.m
?????文件????????5666??2016-01-10?11:55??迷宮尋徑\maze.fig
?????文件????????6226??2016-01-10?12:52??迷宮尋徑\maze.m
?????文件????????1931??2016-01-10?15:20??迷宮尋徑\tra_maze.m
?????目錄???????????0??2016-01-10?19:00??迷宮尋徑\測試文件\
?????文件????????2197??2016-01-08?20:48??迷宮尋徑\測試文件\test_disjset.m
?????文件?????????283??2016-01-09?09:56??迷宮尋徑\測試文件\test_stack.m

評論

共有 條評論