算法:老鼠走迷宮問題

算法:老鼠走迷宮問題(初)

【寫在前面】

  老鼠走迷宮問題的遞歸實現,是對遞歸思想的一種應用。

【問題描述】

  給定一個二維數組,數組中2表示墻壁,0表示通路,由此數組可展示為一個迷宮圖。給定入口位置和出口位置,判斷之間是否存在通路并顯示出走出迷宮的道路。  

【代碼】

對題目的描述部分

int migo[7][7]={
{2, 2, 2, 2, 2, 2, 2},
{2, 0, 0, 0, 0, 0, 2},
{2, 0, 2, 0, 2, 0, 2},
{2, 0, 0, 0, 0, 2, 2},
{2, 2, 0, 2, 0, 2, 2},
{2, 0, 0, 0, 0, 0, 2},
{2, 2, 2, 2, 2, 2, 2}};//迷宮圖int startX=1,startY=1;
int endX=5,endY=5;

說明:

    1.給出用來描述迷宮信息的數組。

    2.給出入口和出口坐標。

遞歸的實現部分

int flag=0;int find(int x,int y)
{migo[x][y]=1;if(x==endX&&y==endY)flag=1;if(migo[x][y+1]==0&&flag!=1)find(x,y+1);if(migo[x][y-1]==0&&flag!=1)find(x,y-1);if(migo[x+1][y]==0&&flag!=1)find(x+1,y);if(migo[x-1][y]==0&&flag!=1)find(x-1,y);if(flag!=1)migo[x][y]=0;return flag;
}

說明:

    1.第一句代碼 migo[x][y]=1,意義何在呢?我們在開始處把它設為1,表示我們以此為軸開始朝四周移動,每到下一個點便再以之為軸,...不段進行判斷,直達我們找到通路,即flag=1。但是我們需要明白的是,一旦我們沿某條路找不到通路時,最后一句代碼

    便又將其還原為0,在對迷宮的所有道路探索后,我們可能會找到通路,那條路上的每一個元素便會被賦予1,如果都沒有,那就不會。

    2.關于遞歸的思路:不斷以某點為軸,向四處擴散,在找到出口點便停止遞歸。

道路展示實現部分

int main(int argc, char **argv)
{int i,j;printf("顯示迷宮:\n");for(i=0;i<7;i++){for(j=0;j<7;j++)if(migo[i][j]==2)printf("");elseprintf(" ");printf("\n");}if(find(startX,startY)==0){printf("\n沒有找到出口!\n");}else{printf("\n顯示路徑:\n");for(i=0;i<7;i++){for(j=0;j<7;j++){if(migo[i][j]==2)printf("");else if(migo[i][j]==1)printf("*");elseprintf(" ");}printf("\n");}}return 0;
}

?

轉載于:https://www.cnblogs.com/MrSaver/p/5940386.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/373745.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/373745.shtml
英文地址,請注明出處:http://en.pswp.cn/news/373745.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

rust python對比_Python Rust 迭代器對比

迭代是數據處理的基石&#xff0c;而 Python 中所有集合都可以迭代&#xff0c;這是 Python 讓使用者感到非常方便的特征之一。下面是一些在 Python 中經常使用的迭代模式# 列表for i in [1, 2, 3, 4]:print(i)# 字典di {a: 1, b: 2, c: 3}# 迭代鍵for k in di.keys():print(k…

WebSphere Application Server性能調整工具包

IBM已發布了WebSphere Application Server性能調整工具包 &#xff0c;該工具包具有從Eclipse工作區*監視多個 WebSphere Application Server的功能。 該工具使用WAS Performance Monitoring統計信息來獲取并繪制圖表&#xff0c;以指示服務器的運行狀況。 *請注意&#xff0c;…

CentOS 配置防火墻操作實例(啟、停、開、閉端口)

CentOS 配置防火墻操作實例&#xff08;啟、停、開、閉端口&#xff09;&#xff1a; 注&#xff1a;防火墻的基本操作命令&#xff1a; 查詢防火墻狀態: [rootlocalhost ~]# service iptables status<回車> 停止防火墻: [rootlocalhost ~]# service iptables stop &…

linux常用命令-壓縮解壓命令

壓縮解壓命令 目錄 1. 壓縮解壓命令&#xff1a;gzip 2. 壓縮解壓命令&#xff1a;gunzip 3. 壓縮解壓命令&#xff1a;tar 4. 壓縮解壓命令&#xff1a;zip 5. 壓縮解壓命令&#xff1a;unzip 6. 壓縮解壓命令&#xff1a;bzip2 7. 壓縮解壓命令&#xff1a;bunzip2 1. 壓縮解…

達夢數據庫查詢數據庫所有表名_達夢數據庫的一些實用小SQL

1)當前數據庫中的模式名&#xff1a;select distinct object_name TABLE_SCHEMA from all_objects where object_type SCH;2)查出各模式對應的用戶&#xff1a;selectSCH_OBJ.NAME ,SCH_OBJ.ID ,SCH_OBJ.CRTDATE,USER_OBJ.NAMEfrom(select NAME, ID, PID, CRTDATE from …

設置Java EE 6開發環境

本教程簡要說明了如何設置典型的環境來開發基于Java EE 6的應用程序。 除了可以正常工作的Windows XP客戶端具有足夠的CPU能力和內存外&#xff0c;本教程沒有其他先決條件。 在教程中&#xff0c;我們將需要安裝以下組件&#xff1a; Java 6 JDK更新26 用于Java EE開發人員的…

css cursor url用法格式詳解

css cursor url用法格式&#xff1a;css:{cursor:url(圖標路徑),auto;} //IE,FF,chrome瀏覽器都可以 實例代碼&#xff1a;html{cursor: url("http://ued.taobao.com/blog/wp-content/themes/taobaoued/images/cursor.ico"),auto;} 解析&#xff1a;前面的url是自定義…

iostext添加點擊事件_iOS開發小技巧 - label中的文字添加點擊事件

Label中的文字添加點擊事件以前老師講過類似的功能,自己懶得回頭看了,找了很多第三方的,感覺這個小巧便利,作者只是擴展了分類,實現起來代碼也少.先來個效果圖自己的項目,直接上代碼- (void)setTopicModel:(CYQTopicModel *)topicModel{_topicModel topicModel;NSArray *likeA…

ubantu下安裝Nginx

Nginx 概述 Nginx ("engine x") 是一個高性能的 HTTP 和 反向代理 服務器&#xff0c;也是一個 IMAP/POP3/SMTP 代理服務器。 Nginx 是由 Igor Sysoev 為俄羅斯訪問量第二的 Rambler.ru 站點開發的&#xff0c;第一個公開版本0.1.0發布于2004年10月4日。其將源代碼…

Hadoop中的問題–何時無法交付?

Hadoop是很棒的軟件。 它不是原始的&#xff0c;但肯定不能消除它的榮耀。 它建立在并行處理的基礎上&#xff0c;這個概念已經存在了數十年。 Hadoop雖然從概念上來說并不是獨創性的&#xff0c;但它顯示了自由開放的力量&#xff08;就像在啤酒中一樣&#xff01;&#xff09…

創建 dblink

目的&#xff1a;oracle中跨數據庫查詢 兩臺數據庫服務器db_A(本地)和db_B(遠程192.168.1.100)&#xff0c;db_A下用戶user_a 需要訪問到db_B下user_b的數據解決&#xff1a;查詢得知使用dblink(即database link 數據庫鏈)實現過程&#xff1a;1、確定用戶user_a有沒有創…

C#靜態常量和動態常量的區別

C#擁有兩種不同的常量&#xff1a;靜態常量(compile-time constants)和動態常量(runtime constants)。它們有不同的特性&#xff0c;錯誤的使用不僅會損失效率&#xff0c;還可能造成錯誤。相比之下&#xff0c;靜態常量在速度上會稍稍快一些&#xff0c;但是靈活性卻比動態常…

spring的鉤子_高級java開發必須掌握的Spring接口——SmartLifecycle

有些場景我們需要在Spring 所有的bean 完成初始化后緊接著執行一些任務或者啟動需要的異步服務。 常見有幾種解決方案j2ee 注解 啟動前PostConstruct 銷毀前PreDestroy 基于j2ee 規范springboot 的 org.springframework.boot.CommandLineRunner springboot 特性前面我已經介紹過…

Java:對Java SE 6和Java SE 7的客戶端和桌面部分的改進!

Java 6和Java 7中的客戶端改進 了解有關Java SE 6和Java SE 7的客戶端和桌面部分的改進&#xff0c;包括新的applet插件&#xff0c;Java Deployment Toolkit&#xff0c;成形和半透明的窗口&#xff0c;重量級-輕量級混合以及Java Web Start。 介紹 自2006年12月發布Java平臺…

辨異 —— 行星 vs 恒星

star&#xff1a;恒星&#xff0c;planet&#xff1a;行星&#xff1b;1. 恒星 恒星是指宇宙中靠核聚變產生的能量而自身能發熱發光的星體&#xff08;比如太陽&#xff09;。過去天文學家以為恒星的位置是永恒不變的&#xff0c;以此為名。但事實上&#xff0c;恒星也會按照一…

軟件公司職責分配

崗位&#xff1a;項目經理 主要職責&#xff1a;1、 計劃&#xff1a;a)項目范圍、項目質量、項目時間、項目成本的確認。b)項目過程/活動的標準化、規范化。c)根據項目范圍、質量、時間與成本的綜合因素的考慮&#xff0c;進行項目的總體規劃與階段計劃。d)各項計劃得到上級領…

大型網站架構系列:負載均衡詳解(4)

本文是負載均衡詳解的第四篇&#xff0c;主要介紹了LVS的三種請求轉發模式和八種負載均衡算法&#xff0c;以及Haproxy的特點和負載均衡算法。具體參考文章&#xff0c;詳見最后的鏈接。 三、LVS負載均衡 LVS是一個開源的軟件&#xff0c;由畢業于國防科技大學的章文嵩博士于19…

關于JavaFX的最常見問題

上周&#xff0c;我在斯德哥爾摩的Jfokus 2012上做了一個關于JavaFX的演講&#xff0c;當時我意識到每次活動都會問三個問題。 似乎有一個普遍的興趣&#xff0c;所以我嘗試在這篇文章中回答他們&#xff08;盡可能的說實話&#xff09;&#xff1a; iPad或其他移動設備上的Jav…

python中面向對象空間時間_python基礎學習Day15 面向對象、類名稱空間、對象名稱空間 (2)...

一、類先看一段代碼&#xff1a;classPerson:animal 高級動物walk_way 直立行走 # 靜態屬性&#xff0c;靜態變量&#xff0c;靜態字段language 語言def __init__(self,name,age,work): # 函數 動態屬性&#xff0c;方法#print(self)self.name nameself.ageageself.workworkdef…

Linux GRUB 引導Win 7 ---- error: invalid EFI file path

最近新買了個固態硬盤&#xff0c;先裝了個Win 7系統&#xff0c;現在裝的系統和以前裝系統唯一的區別是引導不是以前的MBR&#xff0c;而是最新看似是個趨勢的GPTUEFI方式。 win 7 裝完啦&#xff0c;還是和以往的一樣裝 Ubantu (Ubantu 12.04)&#xff0c;ubantu 引導磁盤扇…