https://www.acmicpc.net/problem/1987
#include <iostream>#include <cmath>using namespace std;char board[20][20] = {0, };bool step[26] = {0, };int row, col, answer = 1;int dx[4] = {0, -1, 0, 1};int dy[4] = {-1, 0, 1, 0};bool isInner(int x, int y) {return (x >= 0 && x < row && y >= 0 && y < col);}void move(int depth, int x, int y) {answer = answer > depth ? answer : depth;for (int i = 0; i < 4; ++i) {int newX = x + dx[i];int newY = y + dy[i];if (isInner(newX, newY) &&!step[board[newX][newY] - 'A']) {\step[board[newX][newY] - 'A'] = true;move(depth + 1, newX, newY);step[board[newX][newY] - 'A'] = false;}}}int main(){int result = 0;scanf("%d %d", &row, &col);for (int i = 0 ; i < row; ++i) {scanf("%s", &board[i]);}step[board[0][0] - 'A'] = true;move(1, 0, 0);printf("%d\n", answer);return 0;}
'알고리즘 풀이' 카테고리의 다른 글
백준 10942번 팰린드롬? (0) | 2018.01.22 |
---|---|
백준 6603번 로또 (0) | 2018.01.15 |
백준 2294번 동전2 (0) | 2018.01.08 |
백준 2667번 단지번호붙이기 (0) | 2018.01.05 |
백준 2609번 최대공약수 최소공배수 (0) | 2018.01.01 |