69,382
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
int a[21][21]={0},count=0,m,n;
int main()
{
int x,y;
void search(int x,int y);
scanf("%d%d%d%d",&m,&n,&x,&y);
a[x][y]=1;
a[x-1][x-2]=1; //将不能经过的点的值设为1
a[x-1][x+2]=1;
a[x-2][x+1]=1;
a[x-2][x-1]=1;
a[x+1][x+2]=1;
a[x+1][x-2]=1;
a[x+2][x+1]=1;
a[x+2][x-1]=1;
search(0,0);
printf("%d\n",count); //输出从(0,0)点到达(m,n)点的路数
}
void search(int x,int y)
{
if(x>m||y>n) return ; //如果x>m或者y>n结束搜索
if(x==m&&y==n) {count++;return ;} //如果到达(m,n)这点的话次数加1
if(a[x][y+1]!=1) search(x,y+1); //如果右方可以走的话向右搜索
if(a[x+1][y]!=1) search(x+1,y); //如果下方可以走的话向下搜索
}