寶島探險 BFS DFS

2021-07-11 15:27:09 字數 1473 閱讀 7055

#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] = ,,,};//右下左上

//初始化佇列

head = 1;

tail = 1;

que[tail].x = startx;

que[tail].y = starty;

book[startx][starty] = 1;

tail++;

sum++;

while(head < tail)

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

}head++;

}printf("該島嶼面積為%d.\n",sum);

getchar();

return

0;}

#include 

int a[10][10] = ,,,

,,,,

,,};int next[4][2] = ,,,};//右下左上

/*0表示海洋,1-9表示陸地的海拔,降落在(6,8)處,計算出該島的面積(有多少個格仔)。

即從(6,8)處進行深度優先搜尋, sum ++

*/int book[10][10] = ;

int sum;

void dfs(int x,int y)

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

}return ;

}int main()

著色法

#include 

int a[10][10] = ,,,

,,,,

,,};/*

0表示海洋,1-9表示陸地的海拔。求有幾個島嶼。

*/int next[4][2] = ,,,};//右下左上

int book[10][10] = ;

int sum;

void dfs(int x,int y, int color)

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

}return ;

}int main()}}

//輸出著色後的地圖

for(i=0; i<=9;i++)

printf("\n");

}printf("共有%d個小島。",-num);

getchar();

return 0;

}

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...

DFS BFS解決寶島探險

dfs寶島探險 思路 注意此處我們把與小哼降落點上下左右相連線的陸地視為同一島嶼,0表示海洋,1 9表示陸地。計算小哼降落地所在島的面積 即有多少格仔 include includeusing namespace std int a 51 51 用來儲存地圖 int book 51 51 sum,n...

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

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