DFS BFS解決寶島探險

2021-07-30 23:51:14 字數 1346 閱讀 2342

dfs寶島探險

思路:注意此處我們把與小哼降落點上下左右相連線的陸地視為同一島嶼,0表示海洋,1~9表示陸地。計算小哼降落地所在島的面積(即有多少格仔)

#include#includeusing namespace std;

int a[51][51];//用來儲存地圖

int book[51][51],sum,n,m;

void dfs(int x,int y) ,//向右

,//向下

,//向左

};//向上

int tx,ty;

for(int k=0;k<=3;k++)

} return ;

}int main()

bfs 寶島探險

#include#includeusing namespace std;

struct note ;

int main() ;

//定義乙個用於表示走的方向的陣列

int next[4][2]=,//向右

,//向下

,//向左

};//向上

int n,m,startx,starty;

cin>>n>>m>>startx>>starty;

for(int i=1;i<=n;i++)

for(int j=1;j<=m;j++)

cin>>a[i][j];

//佇列初始化

int head=1;

int tail=1;

que[tail].x=startx;

que[tail].y=starty;

tail++;

book[startx][starty]=1;

int sum=1;

int tx,ty;

while(headn|| ty<1 || ty>m)

continue;

//判斷是否為障礙物 或者已經在路徑中

if(a[tx][ty]>0 && book[tx][ty]==0)

}head++;//此地方不能忘記,當乙個點拓展結束,head++才能對後面的點再進行拓展

} printf("%d",sum);

//getchar();getchar();

return 0;

}

節選自啊哈磊《啊哈!演算法》!

寶島探險 BFS DFS

include int a 10 10 0表示海洋,1 9表示陸地的海拔,降落在 6,8 處,計算出該島的面積 有多少個格仔 即從 6,8 處進行廣度優先搜尋,sum struct note int main int startx 6,starty 8 intsum 0 int next 4 2 右...

4 5 2寶島探險 BFSearch

includeusing namespace std struct note int main 定義乙個標記陣列並全部初始化為0 int a 51 51 用來儲存地圖 int i,j,k,sum,max 0,mx,my,n,m,startx,starty,tx,ty 定義乙個方向陣列 int nex...

寶島探險深度優先搜尋(著色法)

寫這一篇是為了上篇 ycb惹女朋友生氣了 上篇用到了著色法,下面主要介紹一下什麼是用深度優先搜尋實現的著色法 1.求從起點開始連線的一整塊陸地的面積,即從起點出發向四周搜尋,每搜到一塊陸地就加一,直到周圍全是海洋,並且對陸地進行染色,即標記上負數的數字。include include include...