非递归实现在我的另一个博客
https://www.cnblogs.com/outxiao/p/13812184.html
这里写递归是实现
#include <iostream>
#include <string>
#include <string.h>
#define N 10
using namespace std;
typedef long long ll;
static string m[N];
static int visited [N][N];
bool check(int x,int y){
return x < 0 || x > N-1 || y < 0 || y > N-1;
}
bool dfs(int x ,int y){
if(check(x,y))
return true;
if(visited[x][y] == 1)
return false;
visited[x][y] = 1;
switch(m[x][y]){
case 'U':
return dfs(x-1,y);
case 'L':
return dfs(x,y-1);
case 'R':
return dfs(x,y+1);
case 'D':
return dfs(x+1,y);
default: return false;
}
}
int main(){
/**
ULDL
RRUL
LRDL
ULLR
*/
int ret = 0;
for(int i = 0;i < N;i++){
cin >> m[i];
}
for(int i = 0;i < N;i++){
for(int j = 0;j < N;j++){
memset(visited, -1, sizeof visited);
if(dfs(i,j))
ret++;
}
}
cout << ret;
return 0;
}