描述
给出一个roe×col的大写字母矩阵,一开始的位置为左上角,你可以向上下左右四个方向移动,并且不能移向曾经经过的字母。问最多可以经过几个字母。
格式
输入格式
第一行,输入字母矩阵行数R和列数S,1≤R,S≤20。 接着输出R行S列字母矩阵。
输出格式
最多能走过的不同字母的个数。
样例
输入样例
3 6 HFDFFB AJHGDH DGAGEH
输出样例
6
限制
时间限制: 1000 ms
内存限制: 65536 KB
现在做的几个回溯题目感觉有点模板形式,套路很简单,找到递归的三要素,递归结束后进行回溯处理。
递归的三要素:递归出口、函数处理过程、递归参数。说明一下这里的递归出口是
a[c[tmpx][tmpy]] == 1的情况。
对回溯有疑惑的,可以看看该博主的博文:LeetCode--回溯法心得
#include <iostream>
#include <string.h>
#include <algorithm>
using namespace std;
int dx[4] = {0, 0, -1, 1};
int dy[4] = {-1, 1, 0, 0};
int a[92];
int r, s, ans=0;
char c[22][22];
void dfs(int, int, int);
int main()
{
memset(a, 0, sizeof(a));