你为什么不是x2和z2分别小于n和m?却是小于4.
by 薛裕龙 @ 2018-07-19 11:37:10
x2<=n&&z2<=m
另外还要开个数组book标记一下走过的就不能走啦
a数组标记的是障碍物 你把它和book混用了
by LengChu @ 2018-07-19 11:37:14
40分再次求助qwq
```
#include<cstdio>
int a[10086][10086];
int n,m,p,q,t,sx,sy,fx,fy,x2,z2,i,sum;
int xi[4]={1,0,0,-1},zi[4]={0,1,-1,0};
int ti1[9999],ti2[9999];
void ac(int x1,int z1)
{
for(i=0;i<=3;i++)
{
if(x1+xi[i]>=1&&z1+zi[i]>=1&&x1+xi[i]<=n&&z1+zi[i]<=m)
{
if(a[x1+xi[i]][z1+zi[i]]==0)
{
x2=x1+xi[i];
z2=z1+zi[i];
a[x2][z2]=1;
if(x2==fx&&z2==fy)
{
sum++;
return;
}
else
ac(x2,z2);
a[x2][z2]=0;
}
}
}
}
int main()
{
scanf("%d %d %d %d %d %d %d",&n,&m,&t,&sx,&sy,&fx,&fy);
for(i=1;i<=t;i++)
{
scanf("%d %d",&ti1[i],&ti2[i]);
a[ti1[i]][ti2[i]]=1;
}
ac(sx,sy);
printf("%d",sum);
}
```
by 爱晚亭哦 @ 2018-07-19 11:55:10