啊哈演算法117頁的經典題目
深夜的水管工
include
//《啊哈演算法》P117 //寫程式碼的時候一定要非常小心,一個錯字元就可能浪費掉你幾個小時
using namespace std;
int n,m,flag; int a[51][51],b[51][51];
struct node //這種情況下比STL好用
{ int x; int y; }s[100]; int top=0;
void dfs(int x,int y,int front) { int i; if(x==n&&y==m+1)//中間如果加逗號是或的意思
{
flag=1;
for(i=1;i<=top;i++) //放在這裡是應為放底下會被全部彈出
cout<<"("<<s[i].x<<","<<s[i].y<<")-->";
cout<<top<<"步"<<endl;
return;
}
if(x<1||x>n||y<1||y>m)return;
if(b[x][y]==1)return;
b[x][y]=1;
top++;
s[top].x=x;
s[top].y=y;
if(a[x][y]==1)//x對應行,y對應列,,,不要搞反了
{
if(front==1)dfs(x,y+1,1);
if(front==2)dfs(x+1,y,2);
if(front==3)dfs(x,y-1,3);
if(front==4)dfs(x-1,y,4);
}
if(a[x][y]==2)
{
if(front==1)dfs(x-1,y,4),dfs(x+1,y,2);//逗號的應用
if(front==2)dfs(x,y-1,3),dfs(x,y+1,1);
if(front==3)dfs(x-1,y,4),dfs(x+1,y,2);
if(front==4)dfs(x,y-1,3),dfs(x,y+1,1);
}
b[x][y]=0;
top--; //要記得彈出不然路徑裡就會多好多東西
return;
}
int main() { int i,j; cin>>n>>m; for(i=1;i<=n;i++)for(j=1;j<=m;j++)cin>>a[i][j]; dfs(1,1,1); if(flag)cout<<"Yes"<
cin>>i;
return 0;
}
相關文章
- js經典題目JS
- 迴文數系列題目(經典演算法)演算法
- 演算法設計幾個經典思維題目演算法
- 部分JS經典題目解析JS
- JAVA經典題目彙總Java
- 經典題目螺旋方陣的詳解
- 經典演算法面試題(二)演算法面試題
- 啊哈 演算法演算法
- 50道經典的JAVA程式設計題(目錄)Java程式設計
- 目標函式的經典優化演算法介紹函式優化演算法
- 經典演算法-最大流問題演算法
- google經典演算法面試題-雞蛋問題Go演算法面試題
- 前端面試經典題目合集(HTML+CSS)前端面試HTMLCSS
- 作業系統——程序同步互斥經典題目作業系統
- 經典演算法演算法
- Dreamweaver製作網頁經典問題大整理網頁
- 機器學習經典書目彙總機器學習
- 【經典演算法問題】馬的遍歷【回溯】演算法
- Lisp經典演算法Lisp演算法
- 2019年c語言經典面試題目C語言面試題
- 前端面試經典題目彙總(持續更新中)前端面試
- 經典面試題面試題
- AT 經典90題
- 七道最經典的asp.net頁面傳值題ASP.NET
- 經典面試問題:12小球問題演算法(原始碼)面試演算法原始碼
- 25道經典Java演算法題(含程式碼)Java演算法
- 幾種經典的排序演算法排序演算法
- 經典的決策樹演算法演算法
- 白話經典演算法演算法
- java經典面試題Java面試題
- javascript經典面試題JavaScript面試題
- Js 經典面試題JS面試題
- 前端經典面試題前端面試題
- 7月19日與《啊哈!演算法》作者啊哈磊線上交流演算法
- 谷歌面試官經典作品(CTCI)目錄谷歌面試
- 《啊哈!演算法》第7章 神奇的樹演算法
- JavaScript實現《啊哈!演算法》中的系列演算法JavaScript演算法
- 網頁廣泛使用的經典程式碼網頁