

풀이과정
코드
더보기
#include <iostream>
using namespace std;
int iIsland[50][50] = { 0, };
int W = 0, H = 0;
void CheckIsland(int w, int h);
int main()
{
cin >> W >> H;
while (W != 0 && H != 0)
{
int iNumOfIsland = 0;
for (int j = 0; j < H; ++j)
{
for (int i = 0; i < W; ++i)
{
cin >> iIsland[j][i];
}
}
for (int j = 0; j < H; ++j)
{
for (int i = 0; i < W; ++i)
{
if (iIsland[j][i] == 1)
{
iNumOfIsland++;
CheckIsland(i, j);
}
}
}
cout << iNumOfIsland << endl;
cin >> W >> H;
}
return 0;
}
void CheckIsland(int w, int h)
{
if (iIsland[h][w] == 1)
{
iIsland[h][w] = 0;
if (w != 0)CheckIsland(w - 1, h);
if (w != W - 1)CheckIsland(w + 1, h);
if (h != 0)CheckIsland(w, h - 1);
if (h != H - 1)CheckIsland(w, h + 1);
if (w > 0 && h > 0)CheckIsland(w - 1, h - 1);
if (w < W - 1 && h < H - 1)CheckIsland(w + 1, h + 1);
if (w > 0 && h < H - 1)CheckIsland(w - 1, h + 1);
if (w < W - 1 && h > 0)CheckIsland(w+1, h - 1);
}
}
'알고리즘(C++) > 백준 알고리즘' 카테고리의 다른 글
| [백준] C++ 11047번 : 동전 0 (0) | 2019.12.03 |
|---|---|
| [백준] C++ 11399번 : ATM (0) | 2019.12.03 |
| [백준] C++ 1110번 : 더하기 사이클 (0) | 2019.11.20 |
| [백준] C++ 1912번 : 연속합 (0) | 2019.11.20 |
| [백준] C++ 2156번 : 포도주 시식 (0) | 2019.11.19 |