问题及代码:
/*水管工:铺设管道*/
#include<stdio.h>
int a[50][51];
int book[50][50];
int n,m,flag=0;
void dfs(int x,int y,int front)//定义四个方向左上右下分别为1234
{
int i;
if(x==n && y==m+1)
{
flag==1;
return;
}
if(x<1||x>n||y<1||y>m)
return;
//当前管道是直管情况
if(a[x][y]>=5 && a[x][y]<=6)
{
//直管有四个方向,需要逐个判断
if(front==1) //水从左边进
dfs(x,y+1,1);
else if(front==2)
dfs(x+1,y,2);
else if(front==3)
dfs(x-1,y,3);
else
dfs(x,y-1,4);
}
if(a[x][y]>=1&&a[x][y]<=4)
{
if(front==1)
{
dfs(x+1,y,2);
dfs(x-1,y,4);
}
else if(front==2)
{
dfs(x,y+1,1);
dfs(x,