Taene's

[C++] direct 기법 본문

C++ 개념 공부/알고리즘

[C++] direct 기법

taene_ 2024. 3. 15. 13:38

- 보통 탐색 알고리즘에서 상하좌우나 대각선 등의 방향을 탐색해야할 때 사용한다.

- 아래 예시는 dirX,dirY 배열을 만들고 반복문을 돌리면서 newY, newX를 만들어 재귀함수에 다시 넣는 경우이다.

bool arr[51][51] = { false };
bool visit[51][51] = { false };
int dirX[4] = { 0,0,-1,1 };
int dirY[4] = { -1,1,0,0 };
int m, n, k;

void dfs(int y, int x)
{
	visit[y][x] = 1;
	for (int i = 0; i < 4; i++)
	{
		int newY = y + dirY[i];
		int newX = x + dirX[i];
		if (arr[newY][newX] == 1 && visit[newY][newX] == 0
			&& (newY >= 0 && newY < n) && (newX >= 0 && newX < m))
		{
			dfs(newY, newX);
		}
	}
}