์ฌ์ค ๋ ๋ฌธ์ ์ ๋๋ก ์ฝ์ง๋ ์๊ณ dfs ๋ฌธ์ ์๋ฌด๊ฑฐ๋ ์ฐ์ด์ ํ๋ ค๊ณ ์ฌ๋ ค๋๊ณ ์ฝ์ด๋ณด๋๊น ์ ๋ฒ ๋ฌธ์ ๋ ๊ฑฐ์ ๊ทธ๋ฅ ์๋ฒฝํ ๊ฐ์..๋ฌธ์ ์๋ค..ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ์ ํ ๊ฑฐ ์ง...? ๋ค๋ฅธ ์ ์ด ์๋ค๋ฉด ๊ฐ ๋จ์ง๋ด ์ง์ ์๋ฅผ ์ ๋ ฌํด์ ์ถ๋ ฅํด์ผ ํ๋ค๋๊ฑฐ..??
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int map[50][50] = { 0, };
int count[50] = { 0, };
int M, N, K;
int cnt = 0;
int end = 0; int baechu = 0;
void func();
void dfs(int x, int y);
void printmap();
int main() {
int T;
int i;
scanf("%d", &T);
for (i = 0; i < T; i++) {
func();
}
}
void func() {
int i, tmpx, tmpy;
cnt = 0; end = 0; baechu = 0;
scanf("%d %d %d", &N, &M, &K);
for (i = 0; i < K; i++) {
scanf("%d %d", &tmpx, &tmpy);
map[tmpx][tmpy] = 1;
}
dfs(0, 0);
printf("\n%d\n", cnt);
}
void dfs(int x, int y) {
printf("dfs(%d, %d)\n", x, y);
printmap(); printf("\n");
printf("cnt = %d", cnt); printf("\n");
if (x == N - 1 && y == N - 1) {
end = 1;
return;
}
while (!end) {
if (map[x][y] == 0) {
if (baechu == 0) {
if (x == N - 1)
dfs(0, y + 1);
else
dfs(x + 1, y);
}
if (baechu == 1) {
return;
}
}
if (map[x][y] == 1 && baechu == 0) {
baechu = 1; cnt++;
if (x != N - 1)
dfs(x + 1, y);
dfs(x, y + 1);
map[x][y] = 0;
baechu = 0;
}
if (map[x][y] == 1 && baechu == 1) {
if (x != N - 1)
dfs(x + 1, y);
dfs(x, y + 1);
map[x][y] = 0;
}
}
}
void printmap() {
int i, j;
for (i = 0; i < M; i++) {
for (j = 0; j < N; j++) {
printf("%d ", map[j][i]);
}
printf("\n");
}
}
์ ๋ฒ ์ฝ๋์์ ์กฐ๊ธ ์์ ํด๋ณด์๋ค!
'๐ก๐ธ๐ธ๐ถ๐ฃ: ๐๐๐๐๐๐พ๐๐ฝ๐ > ๐ก๐ฃ๐ข๐ฃ: ๐๐๐๐๐๐พ๐๐ฝ๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ALPS Study] DFS(๊น์ด ์ฐ์ ํ์) - ์ ๊ธฐ๋๋ฐฐ์ถ(BOJ 1012) (0) | 2020.07.27 |
---|---|
[ALPS Study] DFS(๊น์ด ์ฐ์ ํ์) - ํ ํ๋ก์ ํธ(BOJ 9466) (0) | 2020.07.22 |
[ALPS Study] ํ์ -๊ทธ๋ํ์ DFS(๊น์ด ์ฐ์ ํ์)(2) (0) | 2020.07.17 |
[ALPS Study] ํ์ -๊ทธ๋ํ์ DFS(๊น์ด ์ฐ์ ํ์)(1) (0) | 2020.07.16 |
[ALPS Study] ์์ ํ์ - N๊ณผ M(ํด๊ฒฐ์ค) + ๋ณต์ต (0) | 2020.07.15 |