尽力了一直尝试无解,谢谢各位大佬了
#include<stdio.h>
int logo[6][6]; //记录不能走的格子
int n,m; //行列
int start[2],end[2]; //起点坐标与终点坐标
int total=0; //记录总数
int dfs(int a,int b) //a,b接收当前点横纵坐标
{
if(a==end[0]&&b==end[1]) // 到达终点,总数加一,此次结束
{
total++;
return 1;
}
if(logo[a+1][b]==0&&(a+1)<=n) //一直向下走,直到不能走,注意走到边界停止
{
logo[a+1][b]=1; //走过赋值为1
dfs(a+1,b);
logo[a+1][b]=0; //清空赋值
}
if(logo[a-1][b]==0&&(a-1)>=1)
{
logo[a-1][b]=1;
dfs(a-1,b);
logo[a-1][b]=0;
}
if(logo[a][b+1]==0&&(b+1)<=m)
{
logo[a][b+1]=1;
dfs(a,b+1);
logo[a][b+1]=0;
}
if(logo[a][b-1]==0&&(b-1)>=1)
{
logo[a][b-1]=1;
dfs(a,b-1);
logo[a][b-1]=0;
}
}
int main(void)
{
int t; //总障碍数
int n1,m1;// 障碍行列
scanf("%d%d%d",&n,&m,&t);
logo[start[0]][start[1]]=1; //起点表示为已走过
scanf("%d%d%d%d",&start[0],&start[1],&end[0],&end[1]);
for(int i=0;i<t;i++)
{
scanf("%d%d",&n1,&m1);
logo[n1][m1]=1; //障碍赋值为1
}
dfs(start[0],start[1]); //起点开始搜索
printf("%d",total);
return 0;
}