以下是题解部分:
void walk(int x,int y)
{
if(x==fx&&y==fy)
{
total++;
return;
}
else
{
for(int i=0;i<=3;i++)
{
if(temp[x+dx[i]][y+dy[i]]==0&&map[x+dx[i]][y+dy[i]]==1)
{
temp[x][y]=1;
walk(x+dx[i],y+dy[i]);
temp[x][y]=0;
}
}
}
}
现在都没有弄懂关于还原,如果这俩if都不满足不就不会回溯了?比如以下情况(.表示墙,@表示路线,#表示目前位置):
.....
.#@@.
@@@@.
.....