poj 1154 LETTERS

来源:互联网 发布:域名注册是什么 编辑:程序博客网 时间:2024/05/23 19:53
#include <iostream>#include <string>using namespace std;const int MAX = 25;char matrix[MAX][MAX];int r, s, ans;bool vis[30];void init(){     int i, j;     for (i = 0; i < r; i++){         getchar();         for (j = 0; j < s; j++){             scanf("%c", &matrix[i][j]);         }     }          return ;}void DFS(int x, int y, int cnt){     if (x+1 < r && !vis[matrix[x+1][y] - 'A']){         vis[matrix[x+1][y] - 'A'] = 1;         cnt++;         DFS(x+1, y, cnt);         cnt--;         vis[matrix[x+1][y] - 'A'] = 0;     }      if (y+1 < s && !vis[matrix[x][y+1] - 'A']){         vis[matrix[x][y+1] - 'A'] = 1;         cnt++;         DFS(x, y+1, cnt);         cnt--;         vis[matrix[x][y+1] - 'A'] = 0;     }       if (x-1 >= 0 && !vis[matrix[x-1][y] - 'A']){         vis[matrix[x-1][y] - 'A'] = 1;         cnt++;         DFS(x-1, y, cnt);         cnt--;         vis[matrix[x-1][y] - 'A'] = 0;     }       if (y-1 >= 0 && !vis[matrix[x][y-1] - 'A']){         vis[matrix[x][y-1] - 'A'] = 1;         cnt++;         DFS(x, y-1, cnt);         cnt--;         vis[matrix[x][y-1] - 'A'] = 0;     }      if (cnt > ans){         ans = cnt;          return ;     } }int main(){    while (scanf("%d%d", &r, &s) != EOF){            memset(vis, 0, sizeof(vis));            ans = 0;            init();            vis[matrix[0][0] - 'A'] = 1;            DFS(0, 0, 1);              cout << ans << endl;     }        system("pause");}/*3 6HFDFFBAJHGDHDGAGEH5 5ABAAABCAAACDERTSDFGHLLLLL*/

原创粉丝点击