블로그 이미지
shadowchaser
이곳 저곳 이것 저것

calendar

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 29 30

Notice

2016. 6. 27. 23:41 Algorithm/DFS

#include <stdio.h>



int BIG;

int BIGMAP[110][110];

int SMALL;

int SMALLMAP[110][110];

int main(void)

{

freopen("1.txt", "r", stdin);

// 여기서부터 작성

scanf("%d", &BIG);

for (int i = 1; i <= BIG; i++)

for (int j = 1; j <= BIG; j++)

scanf("%1d", &BIGMAP[i][j]);

int count = 0;

scanf("%d", &SMALL);

for (int i = 0; i < SMALL; i++)

for (int j = 0; j < SMALL; j++)

scanf("%1d", &SMALLMAP[i][j]);

int dir;

int tmpcnt = 0;

for (int i = 1; i <= BIG - SMALL + 1; i++) {

for (int j = 1; j <= BIG - SMALL + 1; j++) {

for ( dir = 0; dir < 4; dir++)

{

for (int i = 0; i<SMALL / 2; i++) {

for (int j = i; j<SMALL - i - 1; j++) {

int tmp = SMALLMAP[i][j];

SMALLMAP[i][j] = SMALLMAP[j][SMALL - i - 1];

SMALLMAP[j][SMALL - i - 1] = SMALLMAP[SMALL - i - 1][SMALL - j - 1];

SMALLMAP[SMALL - i - 1][SMALL - j - 1] = SMALLMAP[SMALL - j - 1][i];

SMALLMAP[SMALL - j - 1][i] = tmp;

}

}

if (BIGMAP[i][j] == SMALLMAP[0][0])

{

int check = 1;

for (int x = 0; x < SMALL; x++) {

for (int y = 0; y < SMALL; y++) {

if (BIGMAP[i + x][j + y] != SMALLMAP[x][y])

{

//printf("==>[NOT MATCHED!] [dir:%d] i: %d j: %d -> x: %d, y: %d\n", dir, i, j, x, y);

check = 0;

}

else {

tmpcnt++;

//printf("==>[%d MATCHED, cnt:%d][dir:%d] i: %d j: %d -> x: %d, y: %d\n", tmpcnt, count, dir, i, j, x, y);

}

if (check == 0) {

break;

}

}

}

tmpcnt = 0;

if (check == 1)

count++;

}

}

}

}

printf("%d", count);

return 0;

}

'Algorithm > DFS' 카테고리의 다른 글

정올 그래프 칠하기, 좋은 수열  (0) 2016.08.25
DFS 정복!! 레벨 별  (0) 2016.06.22
예산 관리  (0) 2016.06.18
정올 더하기  (0) 2016.06.17
단지번호 붙이기 - 정올 1695번  (2) 2016.02.25
posted by shadowchaser