时间:2024/2/12
写的第一道DFS的题目,深度搜索感觉就是不撞南墙不回头,直到遇到底了再返回上一级,否则继续向下搜索,返回后继续搜索另一个枝叶。
这个题目就是典型的简单DFS,就遍历一遍就行了。
没有过多的解释,上代码。
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
char a[35][65];
int b[35][65]={0},num=0;
int xy[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
void DFS (int x,int y)
{
num++;
if(x<1||x>30||y<1||y>60||a[x][y]=='0'||b[x][y]==1) return;
b[x][y]=1;
for(int i=0; i<4; i++)
{
int tx = x+xy[i][0];
int ty = y+xy[i][1];
if(a[tx][ty]=='1'&&b[tx][ty]==0)
DFS(tx,ty);
}
}
int main()
{
int res=0;
for(int i=1; i<=30; i++)
for(int j=1; j<=60; j++)
{
cin>>a[i][j];
}
for(int i=1; i<=30; i++)
for(int j=1; j<=60; j++)
{
num=0;
if(a[i][j]=='1' && b[i][j]==0) {
DFS(i,j);
}
res=max(num,res);
}
cout<< res;
cout << 148;
return 0;
}