看大佬们dfs一遍就出结果,蒟蒻的我dfs了三遍,当然这题也可以用bfs做,但是dfs不用队列代码短一些。
#include#include #include using namespace std; const int N = 40; int mp[N][N],st[N][N]; int dx[4]={0,0,1,-1}; int dy[4]={1,-1,0,0}; int n; void dfs1(int xx,int yy) { for(int i=0;i<4;i++) { int x=xx+dx[i],y=yy+dy[i]; if(!st[x][y]&&mp[x][y]==1&&x =0&&y>=0) {st[x][y]=1;dfs1(x,y);} } } void dfs2(int xx,int yy) { for(int i=0;i<4;i++) { int x=xx+dx[i],y=yy+dy[i]; if(!st[x][y]&&x =0&&y>=0&&mp[x][y]==0) {st[x][y]=1;dfs2(x,y);} } } int main(int argc, const char * argv[]) { cin>>n; for(int i=0;i >mp[i][j]; for(int i=0;i



