我試圖解決這個問題:矩陣穿越/ C++
鑑於「1'(土地)和」 0'(水)二維柵格地圖,算上島的數量。一個島被水包圍,並且通過水平或垂直連接相鄰的陸地而形成。你可以假設網格的所有四個邊都被水包圍。
實施例1:
11110
11010
11000
00000
我的解決辦法是:
#include <iostream>
#include <cstdlib>
#define N 5
#define M 4
using namespace std;
int a[5][4] =
{
1,1,1,1,0,
1,1,0,1,0,
1,1,0,0,0,
0,0,0,0,0
};
int counter = 0;
void dfs(int i, int j)
{
a[i][j] = 0 ;
if (i - 1 >= 0) dfs(i - 1, j);
if (i + 1<M) dfs(i + 1, j);
if (j - 1 >= 0) dfs(i, j - 1);
if (j + 1<N) dfs(i, j + 1);
}
int main()
{
int i = 0, j = 0;
for (; i < M; i++)
{
for (j = 0; j < N; j++)
{
if (a[i][j] != 0) {
dfs(i, j);
counter++;
}
}
}
cout <<"No. Of Islands: "<<counter<< endl;
}
該溶液顯示Visua工作室異常。調用dfs函數時,我看不到它出錯的地方。
沒問題。 –
a [5] [4]' - >'a [4] [5]'?還有'i
BLUEPIXY
@iharob plz請參閱編輯。 – adrian008