📄 pku1154.cpp
字号:
#include <stdio.h>
#include <string.h>
#define size 21
char BD[size][size];
int visited[26];
int m, n;
int max;
int Dis[4][2] = {1, 0, -1, 0, 0, 1, 0, -1};
int TestOK(int x, int y)
{
return x >= 0 && x < m && y >= 0 && y < n;
}
void DFS(int x, int y, int depth)
{
int i;
int nx, ny;
if (depth > max)
{
max = depth;
}
for (i = 0; i < 4; i++)
{
nx = x + Dis[i][0];
ny = y + Dis[i][1];
if (TestOK(nx, ny) && visited[BD[nx][ny] - 'A'] == 0)
{
visited[BD[nx][ny] - 'A'] = 1;
DFS(nx, ny, depth + 1);
visited[BD[nx][ny] - 'A'] = 0;
}
}
}
int main()
{
int i;
while (scanf("%d %d", &m, &n) != -1)
{
for (i = 0; i < m; i++)
{
scanf("%s", BD[i]);
}
max = 1;
memset(visited, 0, sizeof(visited));
visited[BD[0][0] - 'A'] = 1;
DFS(0, 0, 1);
printf("%d\n", max);
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -