일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- Numpy
- flask
- All Longest Strings
- 파이썬 포렌식
- markdown
- 2015 봄학기 알고리즘
- codesignal
- 수 정렬하기
- 10953
- almostIncreasingSequence
- baekjun
- Daily Commit
- matrixElementsSum
- 파이썬머신러닝완벽가이드
- data_structure
- 2750
- adjacentElementsProduct
- til
- cpp
- centuryFromYear
- Sequential Search
- codesingal
- shapeArea
- 백준
- collections.deque
- Counting cells in a blob
- Python
- 피보나치 수
- C++
- recursion
Archives
- Today
- Total
Introfor
[Recursion] Counting Cells in a Blob 본문
이 문제는 위 표에서 보이는 0과 1로 구분된 이미지인 binary image를 가진다. 파란색은 image pixel(1), 흰 색은 background pixel(0)이라고 할 때, 상하좌우 및 대각선방향으로 서로 연결된 image pixel들의 집합을 blob라고 한다.
이 문제는 특정 위치 (x, y)에서 blob이 존재하면 그 blob의 셀 개수를 계산하는 문제다.
Solving problem
- 주어진 위치가 존재하는지 여부 판별
- x 혹은 y의 값이 범위를 넘어갈 경우 0을 반환 - 주어진 위치가 image pixel 아닌 판별
- image pixel이 아닌 경우 0을 반환
- blob를 구해야하기 때문에 image pixel이 아닌 경우 필요 없음. - 위 조건들이 모두 일치하지 않을 경우, 주어진 위치는 image pixel이므로 이 픽셀을 포함하고, 상하좌우 및 대각선방향의 pixel들을 확인한다.
- 지났던 image pixel은 구분하기 위해 checked 값을 넣어 분류해준다.
#include <iostream>
using namespace std;
int n = 8;
int grid[8][8] = {
{1, 0, 0, 0, 0, 0, 0, 1},
{0, 1, 1, 0, 0, 1, 0, 0},
{1, 1, 0, 0, 1, 0, 1, 0},
{0, 0, 0, 0, 0, 1, 0, 0},
{0, 1, 0, 1, 0, 1, 0, 0},
{0, 1, 0, 1, 0, 1, 0, 0},
{1, 0, 0, 0, 1, 0, 0, 1},
{0, 1, 1, 0, 0, 1, 1, 1}
};
int bg = 0;
int image = 1;
int checked = 2;
int count_cells(int x, int y){
if(x<0 || y<0 || x>=n || y>=n)
return 0;
else if(grid[x][y] != image)
return 0;
else{
grid[x][y] = checked;
return 1 + count_cells(x-1, y+1) + count_cells(x, y+1)
+ count_cells(x+1, y+1) + count_cells(x-1, y) + count_cells(x+1, y)
+ count_cells(x-1, y-1) + count_cells(x, y-1) + count_cells(x+1, y-1);
}
}
int main(){
cout << count_cells(0, 0);
return 0;
}
2015 봄학기 알고리즘 강의노트
'Doing > C&C++' 카테고리의 다른 글
Byte padding (0) | 2020.09.07 |
---|---|
Recursion. 미로찾기 (0) | 2020.07.28 |
[data_structure] Linked List (0) | 2020.07.26 |
[Algorithm] sequential Search (0) | 2020.07.01 |
[C++] Reference (0) | 2020.06.29 |
Comments