颓废多日后醒来。。。。。dfs填色问题

#include<iostream>
using namespace std;
int a[32][32],b[32][32],n;
int dx[5]={0,0,0,-1,1},dy[5]={0,1,-1,0,0};
void dfs(int x,int y)
{
if(x<0||x>n+1||y<0||y>n+1||b[x][y]!=0)   //为什么是   < 0和  > n+1   呢?为防止在dfs(1,1)时就撞墙停下,在map外面加了一圈0,保证可以进行!
return ;
else
{
b[x][y]=1;
for(int i=1;i<=4;i++)
dfs(x+dx[i],y+dy[i]);
}
}

int main()
{
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
cin>>a[i][j];
b[i][j]=a[i][j];
}
dfs(0,0);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(b[i][j]==0)
cout<<2<<' ';
else if(j==n)
cout<<a[i][j];
else
cout<<a[i][j]<<' ';
}
cout<<endl;
}
}

猜你喜欢

转载自www.cnblogs.com/poo7/p/11745512.html