1.往下是x-1,行的变化 ,而不是y-1
2.重复的兜圈子要return
并且注意赋值二维char数组
#include <bits/stdc++.h>
using namespace std;
//char m[15][15];
string m[10] = {
"UDDLUULRUL",
"UURLLLRRRU",
"RRUURLDLRD",
"RUDDDDUUUU",
"URUDLLRRUU",
"DURLRLDLRL",
"ULLURLLRDU",
"RDLULLRDDD",
"UUDDUDUDLL",
"ULRDLUURRR"
};
int ans;
int st[15][15];
void dfs(int x,int y){
if(x<0||y<0||x>9||y>9){
ans++;
return;
}
if(st[x][y]==1) return;//debug:必须不走重复的不然兜圈子
if(m[x][y]=='L') {
st[x][y]=1;
dfs(x,y-1);
st[x][y]=0;
}
else if(m[x][y]=='R')
{
st[x][y]=1;
dfs(x,y+1);
st[x][y]=0;
}
else if(m[x][y]=='U')
{
st[x][y]=1;
dfs(x-1,y);
st[x][y]=0;
}
else if(m[x][y]=='D')
{
st[x][y]=1;
dfs(x+1,y);
st[x][y]=0;
}
}
int main()
{
//for(int x=0;x<=9;x++)
//for(int y=0;y<=9;y++){
//cin>>m[x][y];
//}
for(int x=0;x<=9;x++){
for(int y=0;y<=9;y++){
dfs(x,y);
}
}
cout<<ans;
return 0;
}