728x90
반응형
목차
https://www.acmicpc.net/problem/1189
문제
코드 구현 방향
백트래킹을 통해 탐색을 하였다.
거리가 도달할 경우 종료해 가지치기를 해 주었다.
코드 구현
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
#include <set>
#include <string>
using namespace std;
int R, C, K;
int dx[4] = { 1, -1, 0, 0 };
int dy[4] = { 0, 0, 1, -1 };
int cnt = 0;
int startx, starty, endx, endy;
char board[7][7] = { '.', };
int visit[7][7] = { 0 };
void print() {
for (int i = 0; i < R; i++) {
for (int j = 0; j < C; j++) {
cout << visit[i][j] << " ";
}
cout << "\n";
}
}
void dfs(int x, int y) {
//print();
if (visit[y][x] == K) {
if (x == endx && y == endy) {
cnt++;
}
return;
}
for (int i = 0; i < 4; i++) {
int nx = x + dx[i];
int ny = y + dy[i];
if (ny <0 || ny > R - 1 || nx < 0 || nx > C - 1)
continue;
if (visit[ny][nx] || board[ny][nx] == 'T')
continue;
visit[ny][nx] = 1+visit[y][x];
dfs(nx, ny);
visit[ny][nx] = 0;
}
}
int main() {
cin >> R >> C >> K;
for (int i = 0; i < R; i++) {
for (int j = 0; j < C; j++) {
cin >> board[i][j];
}
}
startx = 0;
starty = R - 1;
endx = C - 1;
endy = 0;
visit[starty][startx] = 1;
dfs(startx, starty);
cout << cnt;
}
반응형
'백준 문제풀이' 카테고리의 다른 글
[비트마스킹][브루트 포스] 19942 다이어트 c++구현 (0) | 2024.07.09 |
---|---|
[백준][bfs] 3197 백조의 호수 c++ 구현 (0) | 2024.07.04 |
[백준][완전탐색] 14620 꽃길 c++구현 (0) | 2024.07.01 |
[백준][이진 트리][이분 탐색] 9934 완전 이진 트리 (1) | 2024.07.01 |
[백준][완전탐색][백트래킹]2529 부등호 c++구현 (0) | 2024.07.01 |