第一行一个正整数N;
接下来的包含N行,每行N个数。用来描述迷宫。
Time Limit: 1 Sec Memory Limit:128 MB 64bit IO Format: %lld
[Submit][Status][Web Board]
第一行一个正整数N;
接下来的包含N行,每行N个数。用来描述迷宫。
输出路径总数。
3
0 0 0
0 1 1
1 0 0
2
这类问题重点在于访问过的点又可能还要再次访问,所以用dfs加简单回溯就可以了。
#include
#include
#include
using namespace std;
const int N=15,sx[8]={-1,-1,-1,0,0,1,1,1}
,sy[8]={-1,0,1,-1,1,-1,0,1};//八个方向标记做好
int n,sum=0;
int s[N][N],
a[N][N];//是否访问过标记
void dfs(int x,int y)
{
if(x==0&&y==n-1)
{
sum++;
return ;
}
for(int i=0;i<8;i++)//依次访问该点周围八个方向
{
int nx=x+sx[i];
int ny=y+sy[i];
if(nx>=0&&nx=0&&ny>n)
{
sum=0;
memset(s,0,sizeof(s));
memset(a,0,sizeof(a));
for(int i=0;i>s[i][j];
a[0][0]=1;//左上角访问过,置为1;
dfs(0,0);
printf("%d\n",sum);
}
return 0;
}
已AC。